Mercurial > hg > soundsoftware-site
annotate vendor/gems/coderay-0.9.7/bin/coderay @ 855:7294e8db2515 bug_162
Close obsolete branch bug_162
author | Chris Cannam |
---|---|
date | Thu, 14 Jul 2011 11:59:19 +0100 |
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 |