Kiwi is a C implementation of the vast majority of MediaWiki's wikitext syntax. Nevertheless Kiwi fails to pass 90% of the official MediaWiki parser tests (using a relaxed test, where some differences are ignored) as most corner cases are treated differently by the two parsers. It currently takes input on stdin and presents output on stdout, and there is a Ruby FFI module for direct library use as well. The major advantages of this implementation are intended to be speed and memory footprint.
At the moment a 100 line wikitext file with fairly complex markup can be parsed in 5-6ms on a one year old Apple MacBook Pro.
Kiwi is running on the web at drasticcode.com. Check it out there for a better list of capabilities.
require "yapwtp"
parser = WikiParser.new
# Open the requested file, parse, capture text and templates
wikitext = parser.html_from_file("cnn.com.wt")
templates = parser.templates
templates.each do |template|
template_file = File.join("templates", template[:name])
if File.exist? template_file
wikitext.gsub! /#{template[:replace_tag]}/, parser.html_from_file(template_file)
end
end
puts wikitext