123456789_123456789_123456789_123456789_123456789_

Module: RDoc::TokenStream

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Included In:
Defined in: lib/rdoc/token_stream.rb

Overview

A TokenStream is a list of tokens, gathered during the parse of some entity (say a method). Entities populate these streams by being registered with the lexer. Any class can collect tokens by including TokenStream. From the outside, you use such an object by calling the start_collecting_tokens method, followed by calls to add_token and pop_token.

Class Method Summary

Instance Method Summary

Class Method Details

.to_html(token_stream)

Converts #token_stream to HTML wrapping various tokens with elements. Some tokens types are wrapped in spans with the given class names. Other token types are not wrapped in spans.

[ GitHub ]

  
# File 'lib/rdoc/token_stream.rb', line 17

def self.to_html(token_stream)
  token_stream.map do |t|
    next unless t

    style = case t[:kind]
            when :operator   then 'ruby-operator'
            when :keyword    then 'ruby-keyword'
            when :constant   then 'ruby-constant'
            when :ivar       then 'ruby-ivar'
            when :comment    then 'ruby-comment'
            when :value      then 'ruby-value'
            when :string     then 'ruby-string'
            when :symbol     then 'ruby-value'
            when :x_string   then 'ruby-string'
            when :regexp     then 'ruby-regexp'
            when :identifier then 'ruby-identifier'
            end

    text = t[:text]

    text = CGI.escapeHTML text

    if style then
      end_with_newline = text.end_with?("\n")
      text = text.chomp if end_with_newline
      "<span class=\"#{style}\">#{text}</span>#{"\n" if end_with_newline}"
    else
      text
    end
  end.join
end

Instance Method Details

#add_token(token)

Adds one token to the collected tokens

[ GitHub ]

  
# File 'lib/rdoc/token_stream.rb', line 59

def add_token(token)
  @token_stream.push(token)
end

#add_tokens(tokens)

Adds tokens to the collected tokens

[ GitHub ]

  
# File 'lib/rdoc/token_stream.rb', line 52

def add_tokens(tokens)
  @token_stream.concat(tokens)
end

#collect_tokens(language) Also known as: #start_collecting_tokens

Starts collecting tokens

[ GitHub ]

  
# File 'lib/rdoc/token_stream.rb', line 67

def collect_tokens(language)
  @token_stream = []
  @token_stream_language = language
end

#pop_token

Remove the last token from the collected tokens

[ GitHub ]

  
# File 'lib/rdoc/token_stream.rb', line 77

def pop_token
  @token_stream.pop
end

#source_language

Returns the source language of the token stream as a string

Returns 'c' or 'ruby'

[ GitHub ]

  
# File 'lib/rdoc/token_stream.rb', line 100

def source_language
  @token_stream_language == :c ? 'c' : 'ruby'
end

#start_collecting_tokens(language)

[ GitHub ]

  
# File 'lib/rdoc/token_stream.rb', line 72

alias start_collecting_tokens collect_tokens

#token_stream

Current token stream

[ GitHub ]

  
# File 'lib/rdoc/token_stream.rb', line 84

def token_stream
  @token_stream
end

#tokens_to_s

Returns a string representation of the token stream

[ GitHub ]

  
# File 'lib/rdoc/token_stream.rb', line 91

def tokens_to_s
  (token_stream or return '').compact.map { |token| token[:text] }.join ''
end