mirror of
https://github.com/redmine/redmine.git
synced 2025-11-11 15:56:03 +01:00
Added syntax highlightment for repository files (using CodeRay).
Supported languages: c, ruby, rhtml, yaml, html, xml. git-svn-id: http://redmine.rubyforge.org/svn/trunk@644 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
82
vendor/plugins/coderay-0.7.6.227/bin/coderay
vendored
Normal file
82
vendor/plugins/coderay-0.7.6.227/bin/coderay
vendored
Normal file
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env ruby
|
||||
# CodeRay Executable
|
||||
#
|
||||
# Version: 0.1
|
||||
# Author: murphy
|
||||
|
||||
def err msg
|
||||
$stderr.puts msg
|
||||
end
|
||||
|
||||
begin
|
||||
require 'coderay'
|
||||
|
||||
if ARGV.empty?
|
||||
puts <<-USAGE
|
||||
CodeRay #{CodeRay::VERSION} (http://rd.cYcnus.de/coderay)
|
||||
Usage:
|
||||
coderay -<lang> [-<format>] < file > output
|
||||
coderay file [-<format>]
|
||||
Example:
|
||||
coderay -ruby -statistic < foo.rb
|
||||
coderay codegen.c # generates codegen.c.html
|
||||
USAGE
|
||||
end
|
||||
|
||||
first, second = ARGV
|
||||
|
||||
if first
|
||||
if first[/-(\w+)/] == first
|
||||
lang = $1.to_sym
|
||||
input = $stdin.read
|
||||
tokens = :scan
|
||||
elsif first == '-'
|
||||
lang = $1.to_sym
|
||||
input = $stdin.read
|
||||
tokens = :scan
|
||||
else
|
||||
file = first
|
||||
tokens = CodeRay.scan_file file
|
||||
output_filename, output_ext = file, /#{Regexp.escape(File.extname(file))}$/
|
||||
end
|
||||
else
|
||||
puts 'No lang/file given.'
|
||||
exit 1
|
||||
end
|
||||
|
||||
if second
|
||||
if second[/-(\w+)/] == second
|
||||
format = $1.to_sym
|
||||
else
|
||||
raise 'Invalid format (must be -xxx).'
|
||||
end
|
||||
else
|
||||
$stderr.puts 'No format given; setting to default (HTML Page)'
|
||||
format = :page
|
||||
end
|
||||
|
||||
# TODO: allow streaming
|
||||
if tokens == :scan
|
||||
output = CodeRay::Duo[lang => format].highlight input #, :stream => true
|
||||
else
|
||||
output = tokens.encode format
|
||||
end
|
||||
out = $stdout
|
||||
if output_filename
|
||||
output_filename += '.' + CodeRay::Encoders[format]::FILE_EXTENSION
|
||||
if File.exist? output_filename
|
||||
err 'File %s already exists.' % output_filename
|
||||
exit
|
||||
else
|
||||
out = File.open output_filename, 'w'
|
||||
end
|
||||
end
|
||||
out.print output
|
||||
|
||||
rescue => boom
|
||||
err "Error: #{boom.message}\n"
|
||||
err boom.backtrace
|
||||
err '-' * 50
|
||||
err ARGV
|
||||
exit 1
|
||||
end
|
||||
Reference in New Issue
Block a user