comparison vendor/gems/coderay-0.9.7/bin/.svn/text-base/coderay.svn-base @ 210:0579821a129a

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