kind=defined
names=unscan
visibility=public

--- unscan -> self
スキャンポインタを前回のマッチの前の位置に戻します。

      s = StringScanner.new('test string')
      s.scan(/\w+/) # => "test"
      s.unscan
      s.scan(/\w+/) # => "test"


@return selfを返します。

このメソッドでポインタを戻せるのは 1 回分だけです。
2 回分以上戻そうとしたときは例外 StringScanner::Error が発生します。
また、まだマッチを一度も行っていないときや、
前回のマッチが失敗していたときも例外 StringScanner::Error が発生します。

@raise StringScanner::Error 2 回分以上戻そうとした時や、
                            まだマッチを一度も行っていない時、
                            前回のマッチが失敗していた時に発生します。
使用例
      s = StringScanner.new('test string')
      begin
        # マッチを一度も行っていないので、例外が発生する。
        s.unscan
      rescue StringScanner::Error => err
        puts err
        # 出力例
        #=> unscan failed: previous match had failed
      end
      p s.scan(/\w+/) # => "test"
      s.unscan
      begin
        # 二回以上戻そうとしたので、例外が発生する。
        s.unscan
      rescue StringScanner::Error => err
        puts err
        # 出力例
        #=> unscan failed: previous match had failed
      end
      p s.scan(/\w+/) # => "test"
      p s.scan(/\w+/) # => nil
      begin
        # 前回のマッチが失敗しているので、例外が発生する。
        s.unscan
      rescue => err
        puts err
        # 出力例
        #=> unscan failed: previous match had failed
      end


