Module: RDoc::Parser::RubyTools
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
| Included In: | |
| Defined in: | lib/rdoc/parser/ruby_tools.rb | 
Overview
Collection of methods for writing parsers
Instance Method Summary
- 
    
      #add_token_listener(obj)  
    
    Adds a token listener obj, but you should probably use token_listener.
- 
    
      #get_tk  
    
    Fetches the next token from the scanner. 
- 
    
      #get_tk_until(*tokens)  
    
    Reads and returns all tokens up to one of tokens.
- 
    
      #get_tkread  
    
    Retrieves a String representation of the read tokens. 
- 
    
      #peek_read  
    
    Peek equivalent for get_tkread. 
- 
    
      #peek_tk  
    
    Peek at the next token, but don’t remove it from the stream. 
- 
    
      #remove_token_listener(obj)  
    
    Removes the token listener obj
- 
    
      #reset  
    
    Resets the tools. 
- 
    
      #skip_tkspace  
    
    Skips whitespace tokens including newlines. 
- 
    
      #skip_tkspace_without_nl  
    
    Skips whitespace tokens excluding newlines. 
- 
    
      #token_listener(obj)  
    
    Has objlisten to tokens.
- 
    
      #unget_tk(tk)  
    
    Returns tkto the scanner.
Instance Method Details
#add_token_listener(obj)
Adds a token listener obj, but you should probably use token_listener
# File 'lib/rdoc/parser/ruby_tools.rb', line 10
def add_token_listener(obj) @token_listeners ||= [] @token_listeners << obj end
#get_tk
Fetches the next token from the scanner
# File 'lib/rdoc/parser/ruby_tools.rb', line 18
def get_tk tk = nil if @tokens.empty? then if @scanner_point >= @scanner.size return nil else tk = @scanner[@scanner_point] @scanner_point += 1 @read.push tk[:text] end else @read.push @unget_read.shift tk = @tokens.shift end if tk == nil || :on___end__ == tk[:kind] tk = nil end return nil unless tk # inform any listeners of our shiny new token @token_listeners.each do |obj| obj.add_token(tk) end if @token_listeners tk end
#get_tk_until(*tokens)
Reads and returns all tokens up to one of tokens.  Leaves the matched token in the token list.
#get_tkread
Retrieves a String representation of the read tokens
# File 'lib/rdoc/parser/ruby_tools.rb', line 73
def get_tkread read = @read.join("") @read = [] read end
#peek_read
Peek equivalent for get_tkread
# File 'lib/rdoc/parser/ruby_tools.rb', line 82
def peek_read @read.join('') end
#peek_tk
Peek at the next token, but don’t remove it from the stream
#remove_token_listener(obj)
Removes the token listener obj
# File 'lib/rdoc/parser/ruby_tools.rb', line 97
def remove_token_listener(obj) @token_listeners.delete(obj) end
#reset
Resets the tools
# File 'lib/rdoc/parser/ruby_tools.rb', line 104
def reset @read = [] @tokens = [] @unget_read = [] @nest = 0 @scanner_point = 0 end
#skip_tkspace
Skips whitespace tokens including newlines
#skip_tkspace_without_nl
Skips whitespace tokens excluding newlines
#token_listener(obj)
Has obj listen to tokens
# File 'lib/rdoc/parser/ruby_tools.rb', line 143
def token_listener(obj) add_token_listener obj yield ensure remove_token_listener obj end
#unget_tk(tk)
Returns tk to the scanner
# File 'lib/rdoc/parser/ruby_tools.rb', line 153
def unget_tk(tk) @tokens.unshift tk @unget_read.unshift @read.pop # Remove this token from any listeners @token_listeners.each do |obj| obj.pop_token end if @token_listeners nil end