home articles sponsorship newsletter

StringScanner

Currently reading Rebuilding Rails by Noah Gibbs.

At some point, he writes about checking out Active Support for some pointers on metaprogramming. Currently felt into a rabbit hole on the duration part of the lib.

Anyways. Here’s a nifty class in Ruby that facilitates some scanning on strings.

StringScanner provides for lexical scanning operations on a String. source

Usage:

  string = StringScanner.new("bob")
  => #<StringScanner 0/3 @ "bob">

  [9] pry(main)> string.eos?
  => false

  [10] pry(main)> string.pos
  => 0

  [12] pry(main)> string.peek(5)
  => "bob"

  [14] pry(main)> string.getch
  => "b"

  [15] pry(main)> string.pos
  => 1

  [16] pry(main)> string.reset
  => #<StringScanner 0/3 @ "bob">

  [17] pry(main)> string.pos
  => 0