From ace3fcea2ffccb6d88f155cd884eb05d2b2cb067 Mon Sep 17 00:00:00 2001 From: murphy Date: Thu, 16 Mar 2006 18:35:43 +0000 Subject: HTML Encoder: hints fixed and improved. Still in progress. Documentation cleanups. --- lib/coderay/encoders/html.rb | 13 +++++++++---- lib/coderay/tokens.rb | 9 ++++----- 2 files changed, 13 insertions(+), 9 deletions(-) (limited to 'lib/coderay') diff --git a/lib/coderay/encoders/html.rb b/lib/coderay/encoders/html.rb index 65a7874..02a718b 100644 --- a/lib/coderay/encoders/html.rb +++ b/lib/coderay/encoders/html.rb @@ -109,7 +109,7 @@ module Encoders # \x9 (\t) and \xA (\n) not included HTML_ESCAPE_PATTERN = /[\t&"><\xB-\x1f\x7f-\xff\0-\x8]/ - TOKEN_KIND_TO_INFO = Hash.new do |h, kind| + TOKEN_KIND_TO_INFO = Hash.new { |h, kind| h[kind] = case kind when :pre_constant @@ -117,8 +117,11 @@ module Encoders else kind.to_s.gsub(/_/, ' ').gsub(/\b\w/) { $&.capitalize } end - end + } + # Generate a hint about the given +classes+ in a +hint+ style. + # + # +hint+ may be :info, :info_long or :debug. def self.token_path_to_hint hint, classes return '' unless hint title = @@ -126,7 +129,7 @@ module Encoders when :info TOKEN_KIND_TO_INFO[classes.first] when :info_long - classes.map { |kind| TOKEN_KIND_TO_INFO[kind] }.join('/') + classes.reverse.map { |kind| TOKEN_KIND_TO_INFO[kind] }.join('/') when :debug classes.inspect end @@ -145,7 +148,7 @@ module Encoders @css = CSS.new options[:style] hint = options[:hint] - if hint and not [:debug, :info].include? hint + if hint and not [:debug, :info, :info_long].include? hint raise ArgumentError, "Unknown value %p for :hint; expected :info, :debug, false or nil." % hint end @@ -179,7 +182,9 @@ module Encoders if classes.first == :NO_HIGHLIGHT and not hint h[k] = false else + styles.shift if [:delimiter, :modifier, :content, :escape].include? styles.first title = HTML.token_path_to_hint hint, styles + classes.delete 'il' style = @css[*classes] h[k] = if style diff --git a/lib/coderay/tokens.rb b/lib/coderay/tokens.rb index e3b3305..c7ca356 100644 --- a/lib/coderay/tokens.rb +++ b/lib/coderay/tokens.rb @@ -161,12 +161,11 @@ module CodeRay # This can not be undone, but should yield the same output # in most Encoders. It basically makes the output smaller. # - # Combined with dump, it saves space for the cost - # calculating time. + # Combined with dump, it saves space for the cost of time. # # If the scanner is written carefully, this is not required - - # for example, consecutive //-comment lines can already be - # joined in one token by the Scanner. + # for example, consecutive //-comment lines could already be + # joined in one comment token by the Scanner. def optimize print ' Tokens#optimize: before: %d - ' % size if $DEBUG last_kind = last_text = nil @@ -219,7 +218,7 @@ module CodeRay dump.extend Undumping end - # The total size of the tokens; + # The total size of the tokens. # Should be equal to the input size before # scanning. def text_size -- cgit v1.2.1