Sha256: 51c3d7781c89b3359d23f7f9ff6f819c59f6de3df5b50ab24de47f766d109439

Contents?: true

Size: 808 Bytes

Versions: 1

Compression:

Stored size: 808 Bytes

Contents

# frozen_string_literal: false

module CompactData
  # Handle escaping of unicode characters.
  module UNICODE
    VERTICAL_TAB = 0x0b
    BACKSPACE = 0x08
    FORMFEED = 0x0c
    LINEFEED = 0x0a
    CARRIAGE_RETURN = 0x0d
    TAB = 0x09

    def self.escape_char(chr)
      return '' unless chr

      if chr >= 32 && chr <= 127
        '' << chr
      elsif chr == VERTICAL_TAB
        '~u000B'
      elsif chr == BACKSPACE
        '\\b'
      elsif chr == FORMFEED
        '\\f'
      elsif chr == LINEFEED
        '\\n'
      elsif chr == CARRIAGE_RETURN
        '\\r'
      elsif chr == TAB
        '\\t'
      else
        '' << chr
      end
    end

    def self.escape(str)
      result = ''

      str.each_codepoint do |c|
        result << escape_char(c)
      end
      result
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
compactdata-0.0.6 lib/compactdata/util/unicode.rb