Sha256: 00aebe81fc33c0aac9ddcdd47318e5c5c1e7b2e42c1e803cc0df50f5a48fb18b

Contents?: true

Size: 1.63 KB

Versions: 13

Compression:

Stored size: 1.63 KB

Contents

# -*- coding: binary -*-
module Rex
  module Text
    # We are re-opening the module to add these module methods.
    # Breaking them up this way allows us to maintain a little higher
    # degree of organisation and make it easier to find what you're looking for
    # without hanging the underlying calls that we historically rely upon.

    #
    # Return the index of the first badchar in +data+, otherwise return
    # nil if there wasn't any badchar occurences.
    #
    # @param data [String] The string to check for bad characters
    # @param badchars [String] A list of characters considered to be bad
    # @return [Fixnum] Index of the first bad character if any exist in +data+
    # @return [nil] If +data+ contains no bad characters
    def self.badchar_index(data, badchars = '')
      badchars.unpack("C*").each { |badchar|
        pos = data.index(badchar.chr)
        return pos if pos
      }
      return nil
    end

    #
    # Removes bad characters from a string.
    #
    # Modifies +data+ in place
    #
    # @param data [#delete]
    # @param badchars [String] A list of characters considered to be bad
    def self.remove_badchars(data, badchars = '')
      return data if badchars.length == 0
      badchars_pat = badchars.unpack("C*").map{|c| "\\x%.2x" % c}.join
      data.gsub!(/[#{badchars_pat}]/n, '')
      data
    end

    #
    # Returns all chars that are not in the supplied set
    #
    # @param keepers [String]
    # @return [String] All characters not contained in +keepers+
    def self.charset_exclude(keepers)
      excluded_bytes = [*(0..255)] - keepers.unpack("C*")
      excluded_bytes.pack("C*")
    end

  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rex-text-0.2.10 lib/rex/text/badchars.rb
rex-text-0.2.9 lib/rex/text/badchars.rb
rex-text-0.2.8 lib/rex/text/badchars.rb
rex-text-0.2.7 lib/rex/text/badchars.rb
rex-text-0.2.6 lib/rex/text/badchars.rb
rex-text-0.2.5 lib/rex/text/badchars.rb
rex-text-0.2.4 lib/rex/text/badchars.rb
rex-text-0.2.3 lib/rex/text/badchars.rb
rex-text-0.2.1 lib/rex/text/badchars.rb
rex-text-0.2.0 lib/rex/text/badchars.rb
rex-text-0.1.2 lib/rex/text/badchars.rb
rex-text-0.1.1 lib/rex/text/badchars.rb
rex-text-0.1.0 lib/rex/text/badchars.rb