summaryrefslogtreecommitdiffstats
path: root/vendor/plugins/coderay-0.7.6.227/bin/coderay
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/plugins/coderay-0.7.6.227/bin/coderay')
-rw-r--r--vendor/plugins/coderay-0.7.6.227/bin/coderay82
1 files changed, 82 insertions, 0 deletions
diff --git a/vendor/plugins/coderay-0.7.6.227/bin/coderay b/vendor/plugins/coderay-0.7.6.227/bin/coderay
new file mode 100644
index 000000000..52477613c
--- /dev/null
+++ b/vendor/plugins/coderay-0.7.6.227/bin/coderay
@@ -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