annotate vendor/gems/coderay-0.9.7/bin/.svn/text-base/coderay.svn-base @ 1176:7d9db6065048 bug_352

Close obsolete branch bug_352
author Chris Cannam
date Wed, 01 Feb 2012 16:09:00 +0000
parents 0579821a129a
children
rev   line source
Chris@210 1 #!/usr/bin/env ruby
Chris@210 2 # CodeRay Executable
Chris@210 3 #
Chris@210 4 # Version: 0.2
Chris@210 5 # Author: murphy
Chris@210 6
Chris@210 7 require 'coderay'
Chris@210 8
Chris@210 9 if ARGV.empty?
Chris@210 10 $stderr.puts <<-USAGE
Chris@210 11 CodeRay #{CodeRay::VERSION} (http://coderay.rubychan.de)
Chris@210 12
Chris@210 13 Usage:
Chris@210 14 coderay file [-<format>]
Chris@210 15 coderay -<lang> [-<format>] [< file] [> output]
Chris@210 16
Chris@210 17 Defaults:
Chris@210 18 lang: based on file extension
Chris@210 19 format: ANSI colorized output for terminal, HTML page for files
Chris@210 20
Chris@210 21 Examples:
Chris@210 22 coderay foo.rb # colorized output to terminal, based on file extension
Chris@210 23 coderay foo.rb -loc # print LOC count, based on file extension and format
Chris@210 24 coderay foo.rb > foo.html # HTML page output to file, based on extension
Chris@210 25 coderay -ruby < foo.rb # colorized output to terminal, based on lang
Chris@210 26 coderay -ruby -loc < foo.rb # print LOC count, based on lang
Chris@210 27 coderay -ruby -page foo.rb # HTML page output to terminal, based on lang and format
Chris@210 28 coderay -ruby -page foo.rb > foo.html # HTML page output to file, based on lang and format
Chris@210 29 USAGE
Chris@210 30 end
Chris@210 31
Chris@210 32 first, second = ARGV
Chris@210 33
Chris@210 34 def read
Chris@210 35 file = ARGV.grep(/^(?!-)/).last
Chris@210 36 if file
Chris@210 37 if File.exist?(file)
Chris@210 38 File.read file
Chris@210 39 else
Chris@210 40 $stderr.puts "No such file: #{file}"
Chris@210 41 end
Chris@210 42 else
Chris@210 43 $stdin.read
Chris@210 44 end
Chris@210 45 end
Chris@210 46
Chris@210 47 if first
Chris@210 48 if first[/-(\w+)/] == first
Chris@210 49 lang = $1
Chris@210 50 input = read
Chris@210 51 tokens = :scan
Chris@210 52 else
Chris@210 53 file = first
Chris@210 54 unless File.exist? file
Chris@210 55 $stderr.puts "No such file: #{file}"
Chris@210 56 exit 2
Chris@210 57 end
Chris@210 58 tokens = CodeRay.scan_file file
Chris@210 59 end
Chris@210 60 else
Chris@210 61 $stderr.puts 'No lang/file given.'
Chris@210 62 exit 1
Chris@210 63 end
Chris@210 64
Chris@210 65 if second
Chris@210 66 if second[/-(\w+)/] == second
Chris@210 67 format = $1.to_sym
Chris@210 68 else
Chris@210 69 raise 'invalid format (must be -xxx)'
Chris@210 70 end
Chris@210 71 else
Chris@210 72 if $stdout.tty?
Chris@210 73 format = :term
Chris@210 74 else
Chris@210 75 $stderr.puts 'No format given; setting to default (HTML Page).'
Chris@210 76 format = :page
Chris@210 77 end
Chris@210 78 end
Chris@210 79
Chris@210 80 if tokens == :scan
Chris@210 81 output = CodeRay::Duo[lang => format].highlight input
Chris@210 82 else
Chris@210 83 output = tokens.encode format
Chris@210 84 end
Chris@210 85 out = $stdout
Chris@210 86 out.puts output