Sha256: 816f86f0e5d15a66c3c6567bbb7910a0ef5680a2e859e774cc7852f64144d3c4
Contents?: true
Size: 951 Bytes
Versions: 4
Compression:
Stored size: 951 Bytes
Contents
module DeadEnd # Ripper.lex is not guaranteed to lex the entire source document # # lex = LexAll.new(source: source) # lex.each do |value| # puts value.line # end class LexAll include Enumerable def initialize(source:) @lex = Ripper.lex(source) lineno = @lex.last.first.first + 1 source_lines = source.lines last_lineno = source_lines.count until lineno >= last_lineno lines = source_lines[lineno..-1] @lex.concat(Ripper.lex(lines.join, "-", lineno + 1)) lineno = @lex.last.first.first + 1 end @lex.map! { |(line, _), type, token, state| LexValue.new(line, type, token, state) } end def to_a @lex end def each return @lex.each unless block_given? @lex.each do |x| yield x end end def [](index) @lex[index] end def last @lex.last end end end require_relative "lex_value"
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
dead_end-3.0.1 | lib/dead_end/lex_all.rb |
dead_end-3.0.0 | lib/dead_end/lex_all.rb |
dead_end-2.0.2 | lib/dead_end/lex_all.rb |
dead_end-2.0.1 | lib/dead_end/lex_all.rb |