coderay 1.0.5 → 1.0.6.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/coderay/encoders/html.rb +26 -1
- data/lib/coderay/encoders/html/numbering.rb +1 -13
- data/lib/coderay/helpers/file_type.rb +3 -3
- data/lib/coderay/scanners/css.rb +2 -2
- data/lib/coderay/scanners/php.rb +1 -0
- data/lib/coderay/scanners/python.rb +1 -1
- data/lib/coderay/version.rb +1 -1
- metadata +27 -45
@@ -47,6 +47,13 @@ module Encoders
|
|
47
47
|
#
|
48
48
|
# Default: 'CodeRay output'
|
49
49
|
#
|
50
|
+
# === :break_lines
|
51
|
+
#
|
52
|
+
# Split multiline blocks at line breaks.
|
53
|
+
# Forced to true if :line_numbers option is set to :inline.
|
54
|
+
#
|
55
|
+
# Default: false
|
56
|
+
#
|
50
57
|
# === :line_numbers
|
51
58
|
# Include line numbers in :table, :inline, or nil (no line numbers)
|
52
59
|
#
|
@@ -100,6 +107,8 @@ module Encoders
|
|
100
107
|
:wrap => nil,
|
101
108
|
:title => 'CodeRay output',
|
102
109
|
|
110
|
+
:break_lines => false,
|
111
|
+
|
103
112
|
:line_numbers => nil,
|
104
113
|
:line_number_anchors => 'n',
|
105
114
|
:line_number_start => 1,
|
@@ -168,6 +177,10 @@ module Encoders
|
|
168
177
|
@out = ''
|
169
178
|
end
|
170
179
|
|
180
|
+
options[:break_lines] = true if options[:line_numbers] == :inline
|
181
|
+
|
182
|
+
@break_lines = (options[:break_lines] == true)
|
183
|
+
|
171
184
|
@HTML_ESCAPE = HTML_ESCAPE.dup
|
172
185
|
@HTML_ESCAPE["\t"] = ' ' * options[:tab_width]
|
173
186
|
|
@@ -245,7 +258,19 @@ module Encoders
|
|
245
258
|
if text =~ /#{HTML_ESCAPE_PATTERN}/o
|
246
259
|
text = text.gsub(/#{HTML_ESCAPE_PATTERN}/o) { |m| @HTML_ESCAPE[m] }
|
247
260
|
end
|
248
|
-
|
261
|
+
|
262
|
+
style = @span_for_kind[@last_opened ? [kind, *@opened] : kind]
|
263
|
+
|
264
|
+
if @break_lines && (i = text.index("\n")) && (c = @opened.size + (style ? 1 : 0)) > 0
|
265
|
+
close = '</span>' * c
|
266
|
+
reopen = ''
|
267
|
+
@opened.each_with_index do |k, index|
|
268
|
+
reopen << (@span_for_kind[index > 0 ? [k, *@opened[0 ... index ]] : k] || '<span>')
|
269
|
+
end
|
270
|
+
text[i .. -1] = text[i .. -1].gsub("\n", "#{close}\n#{reopen}#{style}")
|
271
|
+
end
|
272
|
+
|
273
|
+
if style
|
249
274
|
@out << style << text << '</span>'
|
250
275
|
else
|
251
276
|
@out << text
|
@@ -68,23 +68,11 @@ module Encoders
|
|
68
68
|
when :inline
|
69
69
|
max_width = (start + line_count).to_s.size
|
70
70
|
line_number = start
|
71
|
-
nesting = []
|
72
71
|
output.gsub!(/^.*$\n?/) do |line|
|
73
|
-
line.chomp!
|
74
|
-
open = nesting.join
|
75
|
-
line.scan(%r!<(/)?span[^>]*>?!) do |close,|
|
76
|
-
if close
|
77
|
-
nesting.pop
|
78
|
-
else
|
79
|
-
nesting << $&
|
80
|
-
end
|
81
|
-
end
|
82
|
-
close = '</span>' * nesting.size
|
83
|
-
|
84
72
|
line_number_text = bolding.call line_number
|
85
73
|
indent = ' ' * (max_width - line_number.to_s.size) # TODO: Optimize (10^x)
|
86
74
|
line_number += 1
|
87
|
-
"<span class=\"line-numbers\">#{indent}#{line_number_text}</span>#{
|
75
|
+
"<span class=\"line-numbers\">#{indent}#{line_number_text}</span>#{line}"
|
88
76
|
end
|
89
77
|
|
90
78
|
when :table
|
@@ -90,8 +90,8 @@ module CodeRay
|
|
90
90
|
'gvy' => :groovy,
|
91
91
|
'h' => :c,
|
92
92
|
'haml' => :haml,
|
93
|
-
'htm' => :
|
94
|
-
'html' => :
|
93
|
+
'htm' => :html,
|
94
|
+
'html' => :html,
|
95
95
|
'html.erb' => :erb,
|
96
96
|
'java' => :java,
|
97
97
|
'js' => :java_script,
|
@@ -120,7 +120,7 @@ module CodeRay
|
|
120
120
|
'sql' => :sql,
|
121
121
|
# 'ss' => :scheme,
|
122
122
|
'tmproj' => :xml,
|
123
|
-
'xhtml' => :
|
123
|
+
'xhtml' => :html,
|
124
124
|
'xml' => :xml,
|
125
125
|
'yaml' => :yaml,
|
126
126
|
'yml' => :yaml,
|
data/lib/coderay/scanners/css.rb
CHANGED
@@ -144,7 +144,7 @@ module Scanners
|
|
144
144
|
encoder.end_group :string
|
145
145
|
|
146
146
|
elsif match = scan(/#{RE::Function}/o)
|
147
|
-
encoder.begin_group :
|
147
|
+
encoder.begin_group :function
|
148
148
|
start = match[/^\w+\(/]
|
149
149
|
encoder.text_token start, :delimiter
|
150
150
|
if match[-1] == ?)
|
@@ -153,7 +153,7 @@ module Scanners
|
|
153
153
|
else
|
154
154
|
encoder.text_token match[start.size..-1], :content
|
155
155
|
end
|
156
|
-
encoder.end_group :
|
156
|
+
encoder.end_group :function
|
157
157
|
|
158
158
|
elsif match = scan(/(?: #{RE::Dimension} | #{RE::Percentage} | #{RE::Num} )/ox)
|
159
159
|
encoder.text_token match, :float
|
data/lib/coderay/scanners/php.rb
CHANGED
@@ -61,7 +61,7 @@ module Scanners
|
|
61
61
|
add(PREDEFINED_VARIABLES_AND_CONSTANTS, :predefined_constant).
|
62
62
|
add(PREDEFINED_EXCEPTIONS, :exception) # :nodoc:
|
63
63
|
|
64
|
-
NAME = / [
|
64
|
+
NAME = / [[:alpha:]_] \w* /x # :nodoc:
|
65
65
|
ESCAPE = / [abfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x # :nodoc:
|
66
66
|
UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} | N\{[-\w ]+\} /x # :nodoc:
|
67
67
|
|
data/lib/coderay/version.rb
CHANGED
metadata
CHANGED
@@ -1,34 +1,26 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: coderay
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 5
|
10
|
-
version: 1.0.5
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.6.rc1
|
5
|
+
prerelease: 6
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Kornelius Kalnbach
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2011-12-28 00:00:00 +01:00
|
19
|
-
default_executable:
|
12
|
+
date: 2012-04-01 00:00:00.000000000 Z
|
20
13
|
dependencies: []
|
21
|
-
|
22
|
-
|
23
|
-
email:
|
14
|
+
description: Fast and easy syntax highlighting for selected languages, written in
|
15
|
+
Ruby. Comes with RedCloth integration and LOC counter.
|
16
|
+
email:
|
24
17
|
- murphy@rubychan.de
|
25
|
-
executables:
|
18
|
+
executables:
|
26
19
|
- coderay
|
27
20
|
extensions: []
|
28
|
-
|
29
|
-
extra_rdoc_files:
|
21
|
+
extra_rdoc_files:
|
30
22
|
- README_INDEX.rdoc
|
31
|
-
files:
|
23
|
+
files:
|
32
24
|
- LICENSE
|
33
25
|
- README_INDEX.rdoc
|
34
26
|
- Rakefile
|
@@ -99,46 +91,36 @@ files:
|
|
99
91
|
- test/functional/examples.rb
|
100
92
|
- test/functional/for_redcloth.rb
|
101
93
|
- test/functional/suite.rb
|
102
|
-
-
|
103
|
-
|
94
|
+
- !binary |-
|
95
|
+
YmluL2NvZGVyYXk=
|
104
96
|
homepage: http://coderay.rubychan.de
|
105
97
|
licenses: []
|
106
|
-
|
107
98
|
post_install_message:
|
108
|
-
rdoc_options:
|
99
|
+
rdoc_options:
|
109
100
|
- -SNw2
|
110
101
|
- -mREADME_INDEX.rdoc
|
111
102
|
- -t CodeRay Documentation
|
112
|
-
require_paths:
|
103
|
+
require_paths:
|
113
104
|
- lib
|
114
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
106
|
none: false
|
116
|
-
requirements:
|
117
|
-
- -
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
hash: 59
|
120
|
-
segments:
|
121
|
-
- 1
|
122
|
-
- 8
|
123
|
-
- 6
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
124
110
|
version: 1.8.6
|
125
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
112
|
none: false
|
127
|
-
requirements:
|
128
|
-
- -
|
129
|
-
- !ruby/object:Gem::Version
|
130
|
-
|
131
|
-
segments:
|
132
|
-
- 0
|
133
|
-
version: "0"
|
113
|
+
requirements:
|
114
|
+
- - ! '>'
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 1.3.1
|
134
117
|
requirements: []
|
135
|
-
|
136
118
|
rubyforge_project: coderay
|
137
|
-
rubygems_version: 1.
|
119
|
+
rubygems_version: 1.8.21
|
138
120
|
signing_key:
|
139
121
|
specification_version: 3
|
140
122
|
summary: Fast syntax highlighting for selected languages.
|
141
|
-
test_files:
|
123
|
+
test_files:
|
142
124
|
- test/functional/basic.rb
|
143
125
|
- test/functional/examples.rb
|
144
126
|
- test/functional/for_redcloth.rb
|