Class: SyntaxSuggest::LexAll
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Instance Chain:
self,
Enumerable
|
|
Inherits: | Object |
Defined in: | lib/syntax_suggest/lex_all.rb |
Overview
Ripper.lex
is not guaranteed to lex the entire source document
lex = .new(source: source) lex.each do |value|
puts value.line
end
Class Method Summary
- .new(source:, source_lines: nil) ⇒ LexAll constructor
Instance Method Summary
Constructor Details
.new(source:, source_lines: nil) ⇒ LexAll
# File 'lib/syntax_suggest/lex_all.rb', line 13
def initialize(source:, source_lines: nil) @lex = Ripper::Lexer.new(source, "-", 1).parse.sort_by(&:pos) lineno = @lex.last.pos.first + 1 source_lines ||= source.lines last_lineno = source_lines.length until lineno >= last_lineno lines = source_lines[lineno..-1] @lex.concat( Ripper::Lexer.new(lines.join, "-", lineno + 1).parse.sort_by(&:pos) ) lineno = @lex.last.pos.first + 1 end last_lex = nil @lex.map! { |elem| last_lex = LexValue.new(elem.pos.first, elem.event, elem.tok, elem.state, last_lex) } end
Instance Method Details
#[](index)
[ GitHub ]# File 'lib/syntax_suggest/lex_all.rb', line 45
def [](index) @lex[index] end
#each
[ GitHub ]# File 'lib/syntax_suggest/lex_all.rb', line 38
def each return @lex.each unless block_given? @lex.each do |x| yield x end end
#last
[ GitHub ]# File 'lib/syntax_suggest/lex_all.rb', line 49
def last @lex.last end
#to_a
[ GitHub ]# File 'lib/syntax_suggest/lex_all.rb', line 34
def to_a @lex end