Class: CSV::Parser::Scanner
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
StringScanner
|
|
Instance Chain:
self,
StringScanner
|
|
Inherits: |
StringScanner
|
Defined in: | lib/csv/parser.rb |
Overview
CSV::Scanner
receives a ::CSV
output, scans it and return the content. It also controls the life cycle of the object with its methods #keep_start, #keep_end, #keep_back, #keep_drop.
Uses StringScanner (the official strscan gem). Strscan provides lexical scanning operations on a ::String
. We inherit its object and take advantage on the methods. For more information, please visit: ruby-doc.org/stdlib-2.6.1/libdoc/strscan/rdoc/StringScanner.html
Class Method Summary
- .new(*args) ⇒ Scanner constructor
Instance Method Summary
Constructor Details
.new(*args) ⇒ Scanner
# File 'lib/csv/parser.rb', line 42
def initialize(*args) super @keeps = [] end
Instance Method Details
#each_line(row_separator)
[ GitHub ]# File 'lib/csv/parser.rb', line 47
def each_line(row_separator) position = pos rest.each_line(row_separator) do |line| position += line.bytesize self.pos = position yield(line) end end
#keep_back
[ GitHub ]# File 'lib/csv/parser.rb', line 65
def keep_back self.pos = @keeps.pop end
#keep_drop
[ GitHub ]# File 'lib/csv/parser.rb', line 69
def keep_drop @keeps.pop end
#keep_end
[ GitHub ]# File 'lib/csv/parser.rb', line 60
def keep_end start = @keeps.pop string.byteslice(start, pos - start) end
#keep_start
[ GitHub ]# File 'lib/csv/parser.rb', line 56
def keep_start @keeps.push(pos) end
#scan_all
[ GitHub ]# File 'lib/csv/parser.rb', line 40
alias_method :scan_all, :scan