Sha256: 9a02d84e94886628a350b24f1bb668d2346ca3ed861c25539ee332d08bf44809

Contents?: true

Size: 1.24 KB

Versions: 75

Compression:

Stored size: 1.24 KB

Contents

require "strscan"

class RPStringScanner < StringScanner
#   if ENV['TALLY'] then
#     alias :old_getch :getch
#     def getch
#       warn({:getch => caller[0]}.inspect)
#       old_getch
#     end
#   end

  if "".respond_to? :encoding then
    if "".respond_to? :byteslice then
      def string_to_pos
        string.byteslice(0, pos)
      end
    else
      def string_to_pos
        string.bytes.first(pos).pack("c*").force_encoding(string.encoding)
      end
    end

    def charpos
      string_to_pos.length
    end
  else
    alias :charpos :pos

    def string_to_pos
      string[0..pos]
    end
  end

  def unread_many str # TODO: remove this entirely - we should not need it
    warn({:unread_many => caller[0]}.inspect) if ENV['TALLY']
    begin
      string[charpos, 0] = str
    rescue IndexError
      # HACK -- this is a bandaid on a dirty rag on an open festering wound
    end
  end

  if ENV['DEBUG'] then
    alias :old_getch :getch
    def getch
      c = self.old_getch
      p :getch => [c, caller.first]
      c
    end

    alias :old_scan :scan
    def scan re
      s = old_scan re
      where = caller[1].split(/:/).first(2).join(":")
      d :scan => [s, where] if s
      s
    end
  end

  def d o
    $stderr.puts o.inspect
  end
end

Version data entries

75 entries across 61 versions & 3 rubygems

Version Path
ruby_parser-3.17.0 lib/rp_stringscanner.rb
brakeman-5.1.1 bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/rp_stringscanner.rb
brakeman-5.1.0 bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/rp_stringscanner.rb
brakeman-5.0.4 bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/rp_stringscanner.rb
brakeman-5.0.2 bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/rp_stringscanner.rb
ruby_parser-3.16.0 lib/rp_stringscanner.rb
brakeman-5.0.1 bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/rp_stringscanner.rb
brakeman-5.0.0 bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/rp_stringscanner.rb
ruby_parser-3.15.1 lib/rp_stringscanner.rb
brakeman-4.10.1 bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/rp_stringscanner.rb
brakeman-5.0.0.pre1 bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/rp_stringscanner.rb
brakeman-4.10.0 bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/rp_stringscanner.rb
brakeman-4.9.1 bundle/ruby/2.7.0/gems/ruby_parser-3.15.0/lib/rp_stringscanner.rb
ruby_parser-3.15.0 lib/rp_stringscanner.rb
brakeman-4.9.0 bundle/ruby/2.7.0/gems/ruby_parser-3.14.2/lib/rp_stringscanner.rb
brakeman-4.8.2 bundle/ruby/2.7.0/gems/ruby_parser-3.14.2/lib/rp_stringscanner.rb
brakeman-4.8.1 bundle/ruby/2.4.0/gems/ruby_parser-3.14.2/lib/rp_stringscanner.rb
brakeman-4.8.0 bundle/ruby/2.7.0/gems/ruby_parser-3.14.2/lib/rp_stringscanner.rb
ruby_parser-3.14.2 lib/rp_stringscanner.rb
zuora_connect_ui-0.10.0 vendor/ruby/2.6.0/gems/brakeman-4.5.1/bundle/ruby/2.5.0/gems/ruby_parser-3.13.1/lib/rp_stringscanner.rb