summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/coderay/duo.rb5
-rw-r--r--lib/coderay/encoders/html/numerization.rb4
-rw-r--r--lib/coderay/scanner.rb18
-rw-r--r--lib/coderay/scanners/c.rb6
4 files changed, 21 insertions, 12 deletions
diff --git a/lib/coderay/duo.rb b/lib/coderay/duo.rb
index 8187277..1957c95 100644
--- a/lib/coderay/duo.rb
+++ b/lib/coderay/duo.rb
@@ -1,5 +1,10 @@
module CodeRay
+ # = Duo
+ #
+ # $Id: scanner.rb 123 2006-03-21 14:46:34Z murphy $
+ #
+ # TODO: Doc.
class Duo
attr_accessor :scanner, :encoder
diff --git a/lib/coderay/encoders/html/numerization.rb b/lib/coderay/encoders/html/numerization.rb
index c5d96f3..19c760e 100644
--- a/lib/coderay/encoders/html/numerization.rb
+++ b/lib/coderay/encoders/html/numerization.rb
@@ -57,8 +57,10 @@ module Encoders
line = start
gsub!(/^/) do
line_number = bolding.call line
+ indent = ' ' * (max_width - line.to_s.size)
+ res = "<span class=\"no\">#{indent}#{line_number}</span> "
line += 1
- "<span class=\"no\">#{ line_number.rjust(max_width) }</span> "
+ res
end
when :table
diff --git a/lib/coderay/scanner.rb b/lib/coderay/scanner.rb
index 5ff07a0..16998f2 100644
--- a/lib/coderay/scanner.rb
+++ b/lib/coderay/scanner.rb
@@ -91,14 +91,15 @@ module CodeRay
# TokenStream with the +block+ as callback to handle the tokens.
#
# Else, a Tokens object is used.
- def initialize code, options = {}, &block
+ def initialize code='', options = {}, &block
@options = self.class::DEFAULT_OPTIONS.merge options
raise "I am only the basic Scanner class. I can't scan "\
"anything. :( Use my subclasses." if self.class == Scanner
# I love this hack. It seems to silence
# all dos/unix/mac newline problems.
- super code.gsub(/\r\n?/, "\n")
+ code = code.gsub(/\r\n?/, "\n") if code.index ?\r
+ super code
if @options[:stream]
warn "warning in CodeRay::Scanner.new: :stream is set, "\
@@ -117,12 +118,13 @@ module CodeRay
def reset
super
- reset_tokens
+ reset_instance
end
- def string= str
- super
- reset_tokens
+ def string= code
+ code = code.gsub(/\r\n?/, "\n") if code.index ?\r
+ super code
+ reset_instance
end
# Scans the code and returns all tokens in a Tokens object.
@@ -168,10 +170,10 @@ module CodeRay
"#{self.class}#scan_tokens not implemented."
end
- def reset_tokens
+ def reset_instance
@tokens.clear
@cached_tokens = nil
- end
+ end
# Scanner error with additional status information
def raise_inspect msg, tokens, ambit = 30
diff --git a/lib/coderay/scanners/c.rb b/lib/coderay/scanners/c.rb
index 8fae829..5764254 100644
--- a/lib/coderay/scanners/c.rb
+++ b/lib/coderay/scanners/c.rb
@@ -110,7 +110,7 @@ module CodeRay module Scanners
kind = :error
state = :initial
else
- raise "else case \" reached; %p not handled." % peek(1), tokens
+ raise_inspect "else case \" reached; %p not handled." % peek(1), tokens
end
elsif state == :include_expected
@@ -128,12 +128,12 @@ module CodeRay module Scanners
end
else
- raise 'else-case reached', tokens
+ raise_inspect 'else-case reached', tokens
end
match ||= matched
- raise [match, kind], tokens if kind == :error
+ raise_inspect [match, kind], tokens if kind == :error
tokens << [match, kind]