Sha256: 398080fee72fe69a60a82ed5f745c2fffd58da7846522f5fc5c6dd77cdd3e5a3

Contents?: true

Size: 1.07 KB

Versions: 20

Compression:

Stored size: 1.07 KB

Contents

module OverSIP

  module Utils

    # It ensures that two identical byte secuences are matched regardless
    # they have different encoding.
    # For example in Ruby the following returns false:
    #   "iñaki".force_encoding(::Encoding::BINARY) == "iñaki"
    def self.string_compare string1, string2
      string1.to_s.force_encoding(::Encoding::BINARY) == string2.to_s.force_encoding(::Encoding::BINARY)
    end

    # This avoid "invalid byte sequence in UTF-8" when the directly doing:
    #   string =~ /EXPRESSION/
    # and string has invalid UTF-8 bytes secuence.
    # Also avoids "incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)"
    # NOTE: expression argument must be a String or a Regexp.
    def self.regexp_compare string, expression
      string = string.to_s.force_encoding(::Encoding::BINARY)
      if expression.is_a? ::Regexp
        expression = /#{expression.source.force_encoding(::Encoding::BINARY)}/
      else
        expression = /#{expression.to_s.force_encoding(::Encoding::BINARY)}/
      end
      string =~ expression
    end

  end

end

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
oversip_p-1.0.2 lib/oversip/utils.rb
oversip_p-1.0.0 lib/oversip/utils.rb
oversip-2.0.4 lib/oversip/utils.rb
oversip-2.0.3 lib/oversip/utils.rb
oversip-2.0.2 lib/oversip/utils.rb
oversip-2.0.1 lib/oversip/utils.rb
oversip-2.0.0 lib/oversip/utils.rb
oversip-1.4.1 lib/oversip/utils.rb
oversip-1.4.0 lib/oversip/utils.rb
oversip-1.3.8 lib/oversip/utils.rb
oversip-1.3.7 lib/oversip/utils.rb
oversip-1.3.6 lib/oversip/utils.rb
oversip-1.3.5 lib/oversip/utils.rb
oversip-1.3.3 lib/oversip/utils.rb
oversip-1.3.2 lib/oversip/utils.rb
oversip-1.3.1 lib/oversip/utils.rb
oversip-1.3.0 lib/oversip/utils.rb
oversip-1.3.0.dev1 lib/oversip/utils.rb
oversip-1.2.1 lib/oversip/utils.rb
oversip-1.2.0 lib/oversip/utils.rb