beginrequire"linguist"rescueLoadError# Rely on extensions instead.endrequire"github/markup/command_implementation"require"github/markup/gem_implementation"moduleGitHubmoduleMarkups# all of supported markups:MARKUP_ASCIIDOC=:asciidocMARKUP_CREOLE=:creoleMARKUP_MARKDOWN=:markdownMARKUP_MEDIAWIKI=:mediawikiMARKUP_ORG=:orgMARKUP_POD=:podMARKUP_RDOC=:rdocMARKUP_RST=:rstMARKUP_TEXTILE=:textileendmoduleMarkupextendself@@markups={}defmarkups@@markupsenddefmarkup_implsmarkups.valuesenddefpreload!markup_impls.eachdo|markup|markup.loadendenddefrender(filename,content=nil,symlink=nil)content||=File.read(filename)symlink=(File.symlink?(filename)rescuefalse)ifsymlink.nil?ifimpl=renderer(filename,content,symlink)impl.render(filename,content)elsecontentendenddefrender_s(symbol,content)ifcontent.nil?raiseArgumentError,'Can not render a nil.'elsifmarkups.has_key?(symbol)markups[symbol].render(nil,content)elsecontentendenddefmarkup(symbol,gem_name,regexp,languages,opts={},&block)markup_impl(symbol,GemImplementation.new(regexp,languages,gem_name,&block))enddefmarkup_impl(symbol,impl)ifmarkups.has_key?(symbol)raiseArgumentError,"The '#{symbol}' symbol is already defined."endmarkups[symbol]=implenddefcommand(symbol,command,regexp,languages,name,&block)ifFile.exist?(file=File.dirname(__FILE__)+"/commands/#{command}")command=fileendmarkup_impl(symbol,CommandImplementation.new(regexp,languages,command,name,&block))enddefcan_render?(filename,content,symlink=false)!!renderer(filename,content,symlink)enddefrenderer(filename,content,symlink=false)language=language(filename,content,symlink)markup_impls.find{|impl|impl.match?(filename,language)}enddeflanguage(filename,content,symlink=false)ifdefined?(::Linguist)blob=Linguist::Blob.new(filename,content,symlink: symlink)returnLinguist.detect(blob,allow_empty: true)endend# Define markupsmarkups_rb=File.dirname(__FILE__)+'/markups.rb'instance_evalFile.read(markups_rb),markups_rbendend