Class: YARD::Parser::Ruby::TokenResolver
- Inherits:
- 
      Object
      
        - Object
- YARD::Parser::Ruby::TokenResolver
 
- Includes:
- Enumerable
- Defined in:
- lib/yard/parser/ruby/token_resolver.rb
Overview
Supports #each enumeration over a source’s tokens, yielding the token and a possible CodeObjects::Base associated with the constant or identifier token.
Class Method Summary collapse
Instance Method Summary collapse
- 
  
    
      #each {|token, object| ... } ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Iterates over each token, yielding the token and a possible code object that is associated with the token. 
- 
  
    
      #initialize(source, namespace = Registry.root)  ⇒ TokenResolver 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    Creates a token resolver for given source. 
Constructor Details
#initialize(source, namespace = Registry.root) ⇒ TokenResolver
Creates a token resolver for given source.
| 15 16 17 18 19 | # File 'lib/yard/parser/ruby/token_resolver.rb', line 15 def initialize(source, namespace = Registry.root) @tokens = RubyParser.parse(source, '(tokenize)').tokens raise ParserSyntaxError if @tokens.empty? && !source.empty? @default_namespace = namespace end | 
Class Method Details
.state_attr(*attrs) ⇒ Object
| 91 92 93 94 95 96 97 | # File 'lib/yard/parser/ruby/token_resolver.rb', line 91 def self.state_attr(*attrs) attrs.each do |attr| define_method(attr) { @states.last[attr.to_sym] } define_method("#{attr}=") {|v| @states.last[attr.to_sym] = v } protected attr, :"#{attr}=" end end | 
Instance Method Details
#each {|token, object| ... } ⇒ Object
Iterates over each token, yielding the token and a possible code object that is associated with the token.
| 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | # File 'lib/yard/parser/ruby/token_resolver.rb', line 45 def each @states = [] push_state @tokens.each do |token| yield_obj = false if skip_group && [:const, :ident, :op, :period].include?(token[0]) yield token, nil next else self.skip_group = false end case token[0] when :const lookup(token[0], token[1]) yield_obj = true self.last_sep = nil when :ident lookup(token[0], token[1]) yield_obj = true self.last_sep = nil when :op, :period self.last_sep = token[1] unless CodeObjects.types_for_separator(token[1]) self.object = nil self.last_sep = nil end when :lparen push_state when :rparen pop_state else self.object = nil end yield token, (yield_obj ? object : nil) if next_object self.object = next_object self.next_object = nil end self.skip_group = true if yield_obj && object.nil? end end |