class Mustermann::StringScanner::ScanResult

Encapsulates return values for {StringScanner#scan}, {StringScanner#check}, and friends. Behaves like a String (the substring which matched the pattern), but also exposes its position in the main string and any params parsed from it.

Attributes

length[R]

@example

require 'mustermann/string_scanner'
scanner = Mustermann::StringScanner.new('foo/bar')
scanner.scan(:name).length # => 3
scanner.getch.length       # => 1
scanner.scan(:name).length # => 3

@return [Integer] length of the substring

params[R]

Params parsed from the substring. Will not include params from previous scan results.

@example

require 'mustermann/string_scanner'
scanner = Mustermann::StringScanner.new('foo/bar')
scanner.scan(:name).params # => { "name" => "foo" }
scanner.getch.params       # => {}
scanner.scan(:name).params # => { "name" => "bar" }

@see Mustermann::StringScanner#params @see Mustermann::StringScanner#[]

@return [Hash] params parsed from the substring

pos[R]

@example

require 'mustermann/string_scanner'
scanner = Mustermann::StringScanner.new('foo/bar')
scanner.scan(:name).position # => 0
scanner.getch.position       # => 3
scanner.scan(:name).position # => 4

@return [Integer] position the substring starts at

position[R]

@example

require 'mustermann/string_scanner'
scanner = Mustermann::StringScanner.new('foo/bar')
scanner.scan(:name).position # => 0
scanner.getch.position       # => 3
scanner.scan(:name).position # => 4

@return [Integer] position the substring starts at

scanner[R]

The scanner this result came from. @example

require 'mustermann/string_scanner'
scanner = Mustermann::StringScanner.new('foo/bar')
scanner.scan(:name).scanner == scanner # => true

Public Class Methods

new(scanner, position, length, params = {}) click to toggle source

@api private

# File lib/mustermann/string_scanner.rb, line 97
def initialize(scanner, position, length, params = {})
  @scanner, @position, @length, @params = scanner, position, length, params
end

Public Instance Methods

__getobj__() click to toggle source

@api private @!visibility private

# File lib/mustermann/string_scanner.rb, line 103
def __getobj__
  @__getobj__ ||= scanner.to_s[position, length]
end