summaryrefslogtreecommitdiff
path: root/lib/coderay/encoders
diff options
context:
space:
mode:
authormurphy <murphy@rubychan.de>2009-01-22 14:13:43 +0000
committermurphy <murphy@rubychan.de>2009-01-22 14:13:43 +0000
commit70dcba4428281407ff0b92a417c3d6d6939390a4 (patch)
treeb8e467002cd75e7a1694bc7e403218806e915c7d /lib/coderay/encoders
parent4c64867ce924aca00fc40849e83acbfe2fcc3b29 (diff)
downloadcoderay-70dcba4428281407ff0b92a417c3d6d6939390a4.tar.gz
New feature: HTML encode option :highlight_lines. See documentation.
* The scanner test suite uses it and highlights the lines that differ after a failed complete test in *.actual.html.
Diffstat (limited to 'lib/coderay/encoders')
-rw-r--r--lib/coderay/encoders/html.rb11
-rw-r--r--lib/coderay/encoders/html/numerization.rb12
2 files changed, 22 insertions, 1 deletions
diff --git a/lib/coderay/encoders/html.rb b/lib/coderay/encoders/html.rb
index 035ee65..f7f99f7 100644
--- a/lib/coderay/encoders/html.rb
+++ b/lib/coderay/encoders/html.rb
@@ -56,6 +56,16 @@ module Encoders
#
# Default: 10
#
+ # === :highlight_lines
+ #
+ # Highlights certain line numbers now by using the :highlight_lines option.
+ # Can be any Enumerable, typically just an Array or Range, of numbers.
+ #
+ # Bolding is deactivated when :highlight_lines is set. It only makes sense
+ # in combination with :line_numbers.
+ #
+ # Default: nil
+ #
# === :hint
# Include some information into the output using the title attribute.
# Can be :info (show token type on mouse-over), :info_long (with full path)
@@ -82,6 +92,7 @@ module Encoders
:line_numbers => nil,
:line_number_start => 1,
:bold_every => 10,
+ :highlight_lines => nil,
:hint => false,
}
diff --git a/lib/coderay/encoders/html/numerization.rb b/lib/coderay/encoders/html/numerization.rb
index 9f1667f..0b6cf7a 100644
--- a/lib/coderay/encoders/html/numerization.rb
+++ b/lib/coderay/encoders/html/numerization.rb
@@ -32,9 +32,19 @@ module Encoders
#end
bold_every = options[:bold_every]
+ highlight_lines = options[:highlight_lines]
bolding =
- if bold_every == false
+ if bold_every == false && highlight_lines == nil
proc { |line| line.to_s }
+ elsif highlight_lines.is_a? Enumerable
+ highlight_lines = highlight_lines.to_set
+ proc do |line|
+ if highlight_lines.include? line
+ "<strong class=\"highlighted\">#{line}</strong>" # highlighted line numbers in bold
+ else
+ line.to_s
+ end
+ end
elsif bold_every.is_a? Integer
raise ArgumentError, ":bolding can't be 0." if bold_every == 0
proc do |line|