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