coderay 0.5.0.121 → 0.7.1.147
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/FOLDERS +53 -0
- data/README +21 -13
- data/bin/coderay +79 -0
- data/demo/demo_cache.rb +12 -0
- data/demo/demo_html_list.rb +12 -0
- data/lib/coderay.rb +11 -2
- data/lib/coderay/duo.rb +29 -0
- data/lib/coderay/encoder.rb +4 -4
- data/lib/coderay/encoders/_map.rb +6 -6
- data/lib/coderay/encoders/count.rb +3 -3
- data/lib/coderay/encoders/debug.rb +38 -30
- data/lib/coderay/encoders/div.rb +4 -2
- data/lib/coderay/encoders/html.rb +9 -19
- data/lib/coderay/encoders/html/classes.rb +5 -2
- data/lib/coderay/encoders/html/css.rb +5 -6
- data/lib/coderay/encoders/html/numerization.rb +28 -18
- data/lib/coderay/encoders/html/output.rb +4 -4
- data/lib/coderay/encoders/null.rb +16 -16
- data/lib/coderay/encoders/page.rb +21 -0
- data/lib/coderay/encoders/span.rb +6 -3
- data/lib/coderay/encoders/statistic.rb +4 -2
- data/lib/coderay/encoders/tokens.rb +35 -35
- data/lib/coderay/encoders/xml.rb +53 -52
- data/lib/coderay/encoders/yaml.rb +13 -10
- data/lib/coderay/helpers/filetype.rb +41 -5
- data/lib/coderay/helpers/gzip_simple.rb +1 -1
- data/lib/coderay/helpers/plugin.rb +33 -17
- data/lib/coderay/scanner.rb +60 -19
- data/lib/coderay/scanners/_map.rb +12 -8
- data/lib/coderay/scanners/c.rb +16 -8
- data/lib/coderay/scanners/delphi.rb +9 -3
- data/lib/coderay/scanners/html.rb +167 -0
- data/lib/coderay/scanners/nitro_html.rb +125 -0
- data/lib/coderay/scanners/plaintext.rb +4 -2
- data/lib/coderay/scanners/rhtml.rb +65 -0
- data/lib/coderay/scanners/ruby.rb +51 -39
- data/lib/coderay/scanners/ruby/patterns.rb +12 -9
- data/lib/coderay/scanners/xml.rb +18 -0
- data/lib/coderay/scanners/yaml.rb +85 -0
- data/lib/coderay/styles/_map.rb +7 -0
- data/lib/coderay/styles/cycnus.rb +105 -99
- data/lib/coderay/styles/murphy.rb +18 -18
- metadata +19 -6
data/FOLDERS
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
= CodeRay - Trunk folder structure
|
2
|
+
|
3
|
+
== bench - Benchmarking system
|
4
|
+
|
5
|
+
All benchmarking stuff goes here.
|
6
|
+
|
7
|
+
Test inputs are stored in files named <code>example.<lang></code>.
|
8
|
+
Test outputs go to <code>bench/test.<encoder-default-file-extension></code>.
|
9
|
+
|
10
|
+
Run <code>bench/bench.rb</code> to get a usage description.
|
11
|
+
|
12
|
+
Run <code>rake bench</code> to perform an example benchmark.
|
13
|
+
|
14
|
+
|
15
|
+
== bin - Scripts
|
16
|
+
|
17
|
+
Executional files for CodeRay.
|
18
|
+
|
19
|
+
|
20
|
+
== demo - Demos and functional tests
|
21
|
+
|
22
|
+
Demonstrational scripts to show of CodeRay's features.
|
23
|
+
|
24
|
+
Run them as functional tests with <code>rake test:demos</code>.
|
25
|
+
|
26
|
+
|
27
|
+
== etc - Lots of stuff
|
28
|
+
|
29
|
+
Some addidtional files for CodeRay, mainly graphics and Vim scripts.
|
30
|
+
|
31
|
+
|
32
|
+
== gem_server - Gem output folder
|
33
|
+
|
34
|
+
For <code>rake gem</code>.
|
35
|
+
|
36
|
+
|
37
|
+
== lib - CodeRay library code
|
38
|
+
|
39
|
+
This is the base directory for the CodeRay library.
|
40
|
+
|
41
|
+
|
42
|
+
== rake_helpers - Rake helper libraries
|
43
|
+
|
44
|
+
Some files to enhance Rake, including the Autumnal Rdoc template and some scripts.
|
45
|
+
|
46
|
+
|
47
|
+
== test - Tests
|
48
|
+
|
49
|
+
Test for the scanners.
|
50
|
+
|
51
|
+
Each language has its own subfolder and sub-suite.
|
52
|
+
|
53
|
+
Run with <code>rake test</code>.
|
data/README
CHANGED
@@ -11,20 +11,21 @@ Keywords, strings, floats, comments - all in different colors.
|
|
11
11
|
And with line numbers.
|
12
12
|
|
13
13
|
*Syntax* *Highlighting*...
|
14
|
-
* makes code easier to read
|
15
|
-
* lets you detect errors faster
|
14
|
+
* makes code easier to read and maintain
|
15
|
+
* lets you detect syntax errors faster
|
16
16
|
* helps you to understand the syntax of a language
|
17
17
|
* looks nice
|
18
18
|
* is what everybody should have on their website
|
19
19
|
* solves all your problems and makes the girls run after you
|
20
20
|
|
21
|
-
Version: 0.5.0 (2006.
|
22
|
-
Author:: murphy
|
23
|
-
|
24
|
-
Website::
|
21
|
+
Version: 0.5.0 (2006.april.16)
|
22
|
+
Author:: murphy (Kornelius Kalnbach)
|
23
|
+
Contact:: murphy rubychan de
|
24
|
+
Website:: coderay.rubychan.de[http://coderay.rubychan.de]
|
25
|
+
Old Website:: rd.cYcnus.de/coderay[http://rd.cYcnus.de/coderay]
|
25
26
|
Copyright:: (c) 2006 by cYcnus
|
26
27
|
License:: GNU LGPL; see LICENSE file in the main directory.
|
27
|
-
Subversion:: $Id: README
|
28
|
+
Subversion:: $Id: README 139 2006-04-16 04:31:10Z murphy $
|
28
29
|
|
29
30
|
-----
|
30
31
|
|
@@ -34,10 +35,15 @@ You need RubyGems[http://rubyforge.org/frs/?group_id=126].
|
|
34
35
|
|
35
36
|
% gem install coderay
|
36
37
|
|
38
|
+
Since CodeRay is still in beta stage, nightly buildy may be useful:
|
39
|
+
|
40
|
+
% gem install coderay -rs rd.cYcnus.de/coderay
|
41
|
+
|
37
42
|
|
38
43
|
=== Dependencies
|
39
44
|
|
40
|
-
CodeRay needs Ruby 1.8 and the strscan[http://www.ruby-doc.org/stdlib/libdoc/strscan/rdoc/index.htm] library
|
45
|
+
CodeRay needs Ruby 1.8 and the strscan[http://www.ruby-doc.org/stdlib/libdoc/strscan/rdoc/index.htm] library
|
46
|
+
(part of the standard library.)
|
41
47
|
|
42
48
|
|
43
49
|
== Example Usage
|
@@ -45,8 +51,9 @@ CodeRay needs Ruby 1.8 and the strscan[http://www.ruby-doc.org/stdlib/libdoc/str
|
|
45
51
|
|
46
52
|
require 'coderay'
|
47
53
|
|
48
|
-
|
49
|
-
|
54
|
+
tokens = CodeRay.scan "puts 'Hello, world!'", :ruby
|
55
|
+
page = tokens.html :line_numbers => :inline, :wrap => :page
|
56
|
+
puts page
|
50
57
|
|
51
58
|
|
52
59
|
== Documentation
|
@@ -74,9 +81,10 @@ Please report errors in this documentation to <coderay cycnus de>.
|
|
74
81
|
* Doug Kearns and everyone else who worked on ruby.vim - it not only helped me coding CodeRay,
|
75
82
|
but also gave me a wonderful target to reach for the Ruby scanner.
|
76
83
|
* everyone who used CodeRay on http://www.rubyforen.de and http://www.infhu.de/mx
|
77
|
-
* iGEL, magichisoka, manveru and everyone I forgot from rubyforen.de
|
84
|
+
* iGEL, magichisoka, manveru, WoN�Do and everyone I forgot from rubyforen.de
|
85
|
+
* Daniel and Dethix from ruby-mine.de
|
78
86
|
* Dookie (who is no longer with us...) and Leonidas from http://www.python-forum.de
|
79
|
-
* matz
|
87
|
+
* matz and all Ruby gods and gurus
|
80
88
|
* The inventors of: the computer, the internet, the true color display, HTML & CSS, VIM, RUBY,
|
81
89
|
pizza, microwaves, guitars, scouting, programming, anime, manga, coke and green ice tea.
|
82
90
|
|
@@ -94,7 +102,7 @@ Where would we be without all those people?
|
|
94
102
|
* RubyGems[http://docs.rubygems.org/]
|
95
103
|
* {Subversion/TortoiseSVN}[http://tortoisesvn.tigris.org/] using Apache via XAMPP[http://www.apachefriends.org/en/xampp.html]
|
96
104
|
* RDoc (though I'm quite unsatisfied with it)
|
97
|
-
* GNUWin32, MinGW and some other tools to make the shell under windows a bit more
|
105
|
+
* GNUWin32, MinGW and some other tools to make the shell under windows a bit more useful
|
98
106
|
|
99
107
|
---
|
100
108
|
|
data/bin/coderay
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# CodeRay Executable
|
3
|
+
#
|
4
|
+
# Version: 0.1
|
5
|
+
# Author: murphy
|
6
|
+
|
7
|
+
def err msg
|
8
|
+
$stderr.puts msg
|
9
|
+
end
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'coderay'
|
13
|
+
|
14
|
+
if ARGV.empty?
|
15
|
+
puts <<-USAGE
|
16
|
+
CodeRay #{CodeRay::Version} (http://rd.cYcnus.de/coderay)
|
17
|
+
Usage:
|
18
|
+
coderay -<lang> [-<format>] < file > output
|
19
|
+
coderay file [-<format>]
|
20
|
+
Example:
|
21
|
+
coderay -ruby -statistic < foo.rb
|
22
|
+
coderay codegen.c # generates codegen.c.html
|
23
|
+
USAGE
|
24
|
+
end
|
25
|
+
|
26
|
+
first, second = ARGV
|
27
|
+
|
28
|
+
if first
|
29
|
+
if first[/-(\w+)/] == first
|
30
|
+
lang = $1.to_sym
|
31
|
+
input = $stdin.read
|
32
|
+
tokens = CodeRay.scan input, lang
|
33
|
+
elsif first == '-'
|
34
|
+
lang = $1.to_sym
|
35
|
+
input = $stdin.read
|
36
|
+
tokens = CodeRay.scan input, lang
|
37
|
+
else
|
38
|
+
file = first
|
39
|
+
tokens = CodeRay.scan_file file
|
40
|
+
output_filename, output_ext = file, /#{Regexp.escape(File.extname(file))}$/
|
41
|
+
end
|
42
|
+
else
|
43
|
+
puts 'No lang/file given.'
|
44
|
+
exit 1
|
45
|
+
end
|
46
|
+
|
47
|
+
if second
|
48
|
+
if second[/-(\w+)/] == second
|
49
|
+
format = $1.to_sym
|
50
|
+
else
|
51
|
+
raise 'Invalid format (must be -xxx).'
|
52
|
+
end
|
53
|
+
else
|
54
|
+
$stderr.puts 'No format given; setting to default (HTML Page)'
|
55
|
+
format = :page
|
56
|
+
end
|
57
|
+
|
58
|
+
output = tokens.encode format
|
59
|
+
out = $stdout
|
60
|
+
if output_filename
|
61
|
+
output_filename += '.' + CodeRay::Encoders[format]::FILE_EXTENSION
|
62
|
+
if File.exist? output_filename
|
63
|
+
err 'File %s already exists.' % output_filename
|
64
|
+
exit
|
65
|
+
else
|
66
|
+
out = File.open output_filename, 'w'
|
67
|
+
end
|
68
|
+
else
|
69
|
+
|
70
|
+
end
|
71
|
+
out.print output
|
72
|
+
|
73
|
+
rescue => boom
|
74
|
+
err "Error: #{boom.message}\n"
|
75
|
+
err boom.backtrace
|
76
|
+
err '-' * 50
|
77
|
+
err ARGV.options
|
78
|
+
exit 1
|
79
|
+
end
|
data/demo/demo_cache.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'coderay'
|
2
|
+
|
3
|
+
html_encoder = CodeRay.encoder :html
|
4
|
+
|
5
|
+
scanner = Hash.new do |h, lang|
|
6
|
+
h[lang] = CodeRay.scanner lang
|
7
|
+
end
|
8
|
+
|
9
|
+
for lang in [:ruby, :html]
|
10
|
+
tokens = scanner[lang].tokenize 'test <test>'
|
11
|
+
puts html_encoder.encode_tokens(tokens)
|
12
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
$: << '..'
|
2
|
+
require 'coderay'
|
3
|
+
|
4
|
+
tokens = CodeRay.scan File.read(__FILE__), :ruby
|
5
|
+
html = tokens.html(:tab_width => 2, :line_numbers => :inline, :line_number_start => -1)
|
6
|
+
|
7
|
+
puts html.page
|
8
|
+
|
9
|
+
commment = <<_
|
10
|
+
This code must be > 10 lines
|
11
|
+
because I want to test the correct adjustment of the line numbers.
|
12
|
+
_
|
data/lib/coderay.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# = CodeRay Library
|
2
2
|
#
|
3
|
-
# $Id: coderay.rb
|
3
|
+
# $Id: coderay.rb 141 2006-05-11 23:32:49Z murphy $
|
4
4
|
#
|
5
5
|
# CodeRay is a Ruby library for syntax highlighting.
|
6
6
|
#
|
@@ -133,11 +133,12 @@ module CodeRay
|
|
133
133
|
# Minor: odd for beta, even for stable
|
134
134
|
# Teeny: development state
|
135
135
|
# Revision: Subversion Revision number (generated on rake)
|
136
|
-
Version = '0.
|
136
|
+
Version = '0.7.1'
|
137
137
|
|
138
138
|
require 'coderay/tokens'
|
139
139
|
require 'coderay/scanner'
|
140
140
|
require 'coderay/encoder'
|
141
|
+
require 'coderay/duo'
|
141
142
|
require 'coderay/style'
|
142
143
|
|
143
144
|
|
@@ -271,6 +272,14 @@ module CodeRay
|
|
271
272
|
Encoders[format].new options
|
272
273
|
end
|
273
274
|
|
275
|
+
# Finds the Scanner class for +lang+ and creates an instance, passing
|
276
|
+
# +options+ to it.
|
277
|
+
#
|
278
|
+
# See Scanner.new.
|
279
|
+
def scanner lang, options = {}
|
280
|
+
Scanners[lang].new '', options
|
281
|
+
end
|
282
|
+
|
274
283
|
# Extract the options for the scanner from the +options+ hash.
|
275
284
|
#
|
276
285
|
# Returns an empty Hash if <tt>:scanner_options</tt> is not set.
|
data/lib/coderay/duo.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
module CodeRay
|
2
|
+
|
3
|
+
# = Duo
|
4
|
+
#
|
5
|
+
# $Id: scanner.rb 123 2006-03-21 14:46:34Z murphy $
|
6
|
+
#
|
7
|
+
# TODO: Doc.
|
8
|
+
class Duo
|
9
|
+
|
10
|
+
attr_accessor :scanner, :encoder
|
11
|
+
|
12
|
+
def initialize lang, format, options = {}
|
13
|
+
@scanner = CodeRay.scanner lang, CodeRay.get_scanner_options(options)
|
14
|
+
@encoder = CodeRay.encoder format, options
|
15
|
+
end
|
16
|
+
|
17
|
+
class << self
|
18
|
+
alias [] new
|
19
|
+
end
|
20
|
+
|
21
|
+
def encode code
|
22
|
+
@scanner.string = code
|
23
|
+
@encoder.encode_tokens(scanner.tokenize)
|
24
|
+
end
|
25
|
+
alias highlight encode
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/lib/coderay/encoder.rb
CHANGED
@@ -130,10 +130,12 @@ module CodeRay
|
|
130
130
|
# By default, it calls text_token or block_token, depending on
|
131
131
|
# whether +text+ is a String.
|
132
132
|
def token text, kind
|
133
|
-
if text.is_a? String
|
133
|
+
if text.is_a? ::String
|
134
134
|
text_token text, kind
|
135
|
-
|
135
|
+
elsif text.is_a? ::Symbol
|
136
136
|
block_token text, kind
|
137
|
+
else
|
138
|
+
raise 'Unknown token text type: %p' % text
|
137
139
|
end
|
138
140
|
end
|
139
141
|
|
@@ -169,5 +171,3 @@ module CodeRay
|
|
169
171
|
|
170
172
|
end
|
171
173
|
end
|
172
|
-
|
173
|
-
# vim:sw=2:ts=2:noet:tw=78
|
@@ -1,38 +1,46 @@
|
|
1
1
|
module CodeRay
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
2
|
+
module Encoders
|
3
|
+
|
4
|
+
# = Debug Encoder
|
5
|
+
#
|
6
|
+
# Fast encoder producing simple debug output.
|
7
|
+
#
|
8
|
+
# It is readable and diff-able and is used for testing.
|
9
|
+
#
|
10
|
+
# You cannot fully restore the tokens information from the
|
11
|
+
# output, because consecutive :space tokens are merged.
|
12
|
+
# Use Tokens#dump for caching purposes.
|
13
|
+
class Debug < Encoder
|
14
|
+
|
15
|
+
include Streamable
|
16
|
+
register_for :debug
|
17
|
+
|
18
|
+
FILE_EXTENSION = 'raydebug'
|
19
|
+
|
20
|
+
protected
|
21
|
+
def text_token text, kind
|
22
|
+
@out <<
|
23
|
+
if kind == :space
|
24
|
+
text
|
25
|
+
else
|
26
|
+
text = text.gsub(/[)\\]/, '\\\\\0')
|
27
|
+
"#{kind}(#{text})"
|
28
|
+
end
|
29
|
+
end
|
26
30
|
|
27
|
-
|
28
|
-
|
29
|
-
|
31
|
+
def block_token action, kind
|
32
|
+
@out << super
|
33
|
+
end
|
30
34
|
|
31
|
-
|
32
|
-
|
33
|
-
|
35
|
+
def open_token kind
|
36
|
+
"#{kind}<"
|
37
|
+
end
|
34
38
|
|
39
|
+
def close_token kind
|
40
|
+
">"
|
35
41
|
end
|
36
42
|
|
37
43
|
end
|
44
|
+
|
45
|
+
end
|
38
46
|
end
|