diff --git a/Gemfile b/Gemfile index 98ec4dd0..5c043a2b 100644 --- a/Gemfile +++ b/Gemfile @@ -6,4 +6,5 @@ gem "org-ruby", ">= 0.7.0" gem "creole", "~>0.3.6" gem "wikicloth", "=0.6.0" gem "literati", "= 0.0.3" +gem "asciidoctor", ">= 0.0.5" gem "rake" diff --git a/github-markup.gemspec b/github-markup.gemspec index c2e5ee33..86e9bb53 100644 --- a/github-markup.gemspec +++ b/github-markup.gemspec @@ -13,8 +13,8 @@ Gem::Specification.new do |s| ## If your rubyforge_project name is different, then edit it and comment out ## the sub! line in the Rakefile s.name = 'github-markup' - s.version = '0.7.4' - s.date = '2012-07-19' + s.version = '0.7.5' + s.date = '2012-12-17' s.executables = ['github-markup'] ## Make sure your summary is short. The description may be as long @@ -62,8 +62,6 @@ desc bin/github-markup github-markup.gemspec lib/github-markup.rb - lib/github/commands/asciidoc2html - lib/github/commands/asciidocapi.py lib/github/commands/rest2html lib/github/markup.rb lib/github/markup/rdoc.rb @@ -73,6 +71,8 @@ desc test/markups/README.asciidoc.html test/markups/README.creole test/markups/README.creole.html + test/markups/README.lhs + test/markups/README.lhs.html test/markups/README.markdown test/markups/README.markdown.html test/markups/README.mediawiki diff --git a/lib/github-markup.rb b/lib/github-markup.rb index 01a52898..7fe0cfe2 100644 --- a/lib/github-markup.rb +++ b/lib/github-markup.rb @@ -1,6 +1,6 @@ module GitHub module Markup - VERSION = '0.7.4' + VERSION = '0.7.5' Version = VERSION end end diff --git a/lib/github/commands/asciidoc2html b/lib/github/commands/asciidoc2html deleted file mode 100755 index 7a29d472..00000000 --- a/lib/github/commands/asciidoc2html +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env python - -"""A small wrapper file for parsing AsciiDoc files at Github.""" - -__author__ = "Devin Weaver" -__copyright__ = "Copyright (C) 2009 Devin Weaver" -__license__ = "Public Domain" -__version__ = "0.1" - -""" -github_asciidoc.py ------------------- - -This is a wrapper file for parsing AsciiDoc files at github. It wraps the -current AsciiDoc API. - -AsciiDoc specifications suggest using the file extension of `.txt` however this -causes conflict because there is no way to determine if a text file is an -AsciiDoc or not without pre-processing the file. This gives us two simple -options: - -1. **Parse all text files**. We could have all files ending in `.txt` or - ``README.txt`` be parsed through AsciiDoc. It will print pretty text fine - even if it isn't formatted as such. However this could be *not what the user - expects*. -2. **Pick a unique extension**. We could pick a unique extension (i.e. - `.asciidoc`) to prevent clashing. Although not directly suggested by the - author of AsciiDoc there is no standard or practice to the contrary. - -Option two is recommended by myself. - -Requirements -~~~~~~~~~~~~ - -The AsciiDoc API comes in two parts. The first is the system installation of -AsciiDoc which has a simple install_. The second part is the API script. You -can either copy this to the current directory or the application's lib folder. -There is more information on the `API page`_ - -The `re` package is imported here for the purpose to accomplish E-Mail address -cloaking. AsciiDoc does not offer it's own cloaking algorithm like docutils -does. So I made a simple one here to do the same. **If the expense of regex's -is too high it can be easily commented out.** - -.. tip:: - AsciiDoc by default runs in *safe mode* which means it will not include - external files that are **not** in the same directory as the `infile`. - However since we use a StringIO through the API it should be based on the - current working directory. - -.. _install: http://www.methods.co.nz/asciidoc/userguide.html -.. _API page: http://www.methods.co.nz/asciidoc/asciidocapi.html -""" - -try: - import locale - locale.setlocale(locale.LC_ALL, '') -except: - pass - -import sys -import cStringIO # faster then StringIO -from asciidocapi import AsciiDocAPI -from asciidocapi import AsciiDocError -import re # only needed to simulate cloak_email_addresses - -def main(): - """ - Parses the given AsciiDoc file or the redirected string input and returns - the HTML body. - - Usage: asciidoc2html < README.rst - asciidoc2html README.rst - """ - try: - text = open(sys.argv[1], 'r').read() - except IOError: # given filename could not be found - return '' - except IndexError: # no filename given - text = sys.stdin.read() - - infile = cStringIO.StringIO(text) - outfile = cStringIO.StringIO() - asciidoc = AsciiDocAPI() - asciidoc.options('-s') - - try: - asciidoc.execute(infile, outfile, 'xhtml11') - except AsciiDocError, strerror: - str = "%s" % (strerror) - str = str.replace("&", "&") # Must be done first - str = str.replace("<", "%lt;") - str = str.replace(">", "%gt;") - outfile.write ("
AsciiDoc ERROR: %s" % (str)) - - """ - Cloak email addresses - - AsciiDoc API does not have a `cloak_email_addresses` option. We can do the - same with a set of regex but that can be expensive. Keep section commented - to disable. So ``abc@mail.example.com`` becomes: - - ----------- - - abc@mail.example.org - ----------- - """ - def mangleEmail(matches): - email1 = "%s%40%s" % (matches.group(1), matches.group(2)) - email1 = email1.replace(".", ".") - email2 = "%s@%s" % (matches.group(1), matches.group(2)) - email2 = email2.replace(".", ".") - return "%s" % (email1, email2) - - return re.sub(r'([^@]+)@([^@]+)', mangleEmail, outfile.getvalue()) - #return outfile.getvalue() - -if __name__ == '__main__': - print main() diff --git a/lib/github/commands/asciidocapi.py b/lib/github/commands/asciidocapi.py deleted file mode 100644 index 783f808d..00000000 --- a/lib/github/commands/asciidocapi.py +++ /dev/null @@ -1,240 +0,0 @@ -#!/usr/bin/env python -""" -asciidocapi - AsciiDoc API wrapper class. - -The AsciiDocAPI class provides an API for executing asciidoc. Minimal example -compiles `mydoc.txt` to `mydoc.html`: - - import asciidocapi - asciidoc = asciidocapi.AsciiDocAPI() - asciidoc.execute('mydoc.txt') - -- Full documentation in asciidocapi.txt. -- See the doctests below for more examples. - -Doctests: - -1. Check execution: - - >>> import StringIO - >>> infile = StringIO.StringIO('Hello *{author}*') - >>> outfile = StringIO.StringIO() - >>> asciidoc = AsciiDocAPI() - >>> asciidoc.options('--no-header-footer') - >>> asciidoc.attributes['author'] = 'Joe Bloggs' - >>> asciidoc.execute(infile, outfile, backend='html4') - >>> print outfile.getvalue() -
Hello Joe Bloggs
- - >>> asciidoc.attributes['author'] = 'Bill Smith' - >>> infile = StringIO.StringIO('Hello _{author}_') - >>> outfile = StringIO.StringIO() - >>> asciidoc.execute(infile, outfile, backend='docbook') - >>> print outfile.getvalue() -