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
-
.to_html(token_stream)
Converts #token_stream to HTML wrapping various tokens with elements.
Instance Method Summary
-
#add_token(token)
Adds one
tokento the collected tokens. -
#add_tokens(tokens)
Adds
tokensto the collected tokens. -
#collect_tokens(language)
(also: #start_collecting_tokens)
Starts collecting tokens.
-
#pop_token
Remove the last token from the collected tokens.
-
#source_language
Returns the source language of the token stream as a string.
-
#start_collecting_tokens(language)
Aliasfor #collect_tokens. -
#token_stream
Current token stream.
-
#tokens_to_s
Returns a string representation of the token stream.
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.
# 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
# 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
# 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
# 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
# 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'
# File 'lib/rdoc/token_stream.rb', line 100
def source_language @token_stream_language == :c ? 'c' : 'ruby' end
#start_collecting_tokens(language)
Alias for #collect_tokens.
# File 'lib/rdoc/token_stream.rb', line 72
alias start_collecting_tokens collect_tokens
#token_stream
Current token stream
# 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
# File 'lib/rdoc/token_stream.rb', line 91
def tokens_to_s (token_stream or return '').compact.map { |token| token[:text] }.join '' end