Class: CSV::Parser::Scanner
- Inherits:
-
StringScanner
- Object
- StringScanner
- CSV::Parser::Scanner
- 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
Instance Method Summary collapse
- #each_line(row_separator) ⇒ Object
-
#initialize(*args) ⇒ Scanner
constructor
A new instance of Scanner.
- #keep_back ⇒ Object
- #keep_drop ⇒ Object
- #keep_end ⇒ Object
- #keep_start ⇒ Object
Constructor Details
#initialize(*args) ⇒ Scanner
Returns a new instance of Scanner.
42 43 44 45 |
# File 'lib/csv/parser.rb', line 42 def initialize(*args) super @keeps = [] end |
Instance Method Details
#each_line(row_separator) ⇒ Object
47 48 49 50 51 52 53 54 |
# 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 ⇒ Object
65 66 67 |
# File 'lib/csv/parser.rb', line 65 def keep_back self.pos = @keeps.pop end |
#keep_drop ⇒ Object
69 70 71 |
# File 'lib/csv/parser.rb', line 69 def keep_drop @keeps.pop end |
#keep_end ⇒ Object
60 61 62 63 |
# File 'lib/csv/parser.rb', line 60 def keep_end start = @keeps.pop string.byteslice(start, pos - start) end |
#keep_start ⇒ Object
56 57 58 |
# File 'lib/csv/parser.rb', line 56 def keep_start @keeps.push(pos) end |