diff options
Diffstat (limited to 'lib/rdoc/token_stream.rb')
-rw-r--r-- | lib/rdoc/token_stream.rb | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/rdoc/token_stream.rb b/lib/rdoc/token_stream.rb index fb887f2fa4..851bc05bf5 100644 --- a/lib/rdoc/token_stream.rb +++ b/lib/rdoc/token_stream.rb @@ -8,6 +8,51 @@ module RDoc::TokenStream ## + # Converts +token_stream+ to HTML wrapping various tokens with + # <tt><span></tt> elements. The following tokens types are wrapped in spans + # with the given class names: + # + # TkCONSTANT :: 'ruby-constant' + # TkKW :: 'ruby-keyword' + # TkIVAR :: 'ruby-ivar' + # TkOp :: 'ruby-operator' + # TkId :: 'ruby-identifier' + # TkNode :: 'ruby-node' + # TkCOMMENT :: 'ruby-comment' + # TkREGEXP :: 'ruby-regexp' + # TkSTRING :: 'ruby-string' + # TkVal :: 'ruby-value' + # + # Other token types are not wrapped in spans. + + def self.to_html token_stream + token_stream.map do |t| + next unless t + + style = case t + when RDoc::RubyToken::TkCONSTANT then 'ruby-constant' + when RDoc::RubyToken::TkKW then 'ruby-keyword' + when RDoc::RubyToken::TkIVAR then 'ruby-ivar' + when RDoc::RubyToken::TkOp then 'ruby-operator' + when RDoc::RubyToken::TkId then 'ruby-identifier' + when RDoc::RubyToken::TkNode then 'ruby-node' + when RDoc::RubyToken::TkCOMMENT then 'ruby-comment' + when RDoc::RubyToken::TkREGEXP then 'ruby-regexp' + when RDoc::RubyToken::TkSTRING then 'ruby-string' + when RDoc::RubyToken::TkVal then 'ruby-value' + end + + text = CGI.escapeHTML t.text + + if style then + "<span class=\"#{style}\">#{text}</span>" + else + text + end + end.join + end + + ## # Adds +tokens+ to the collected tokens def add_tokens(*tokens) |