Module: TomlRB::BasicString

Defined in:
lib/toml-rb/string.rb

Overview

Used in primitive.citrus

Constant Summary collapse

SPECIAL_CHARS =
{
  '\\0'  => "\0",
  '\\t'  => "\t",
  '\\b'  => "\b",
  '\\f'  => "\f",
  '\\n'  => "\n",
  '\\r'  => "\r",
  '\\"'  => '"',
  '\\\\' => '\\'
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.decode_unicode(str) ⇒ Object

Replace the unicode escaped characters with the corresponding character e.g. u03B4 => ?



23
24
25
# File 'lib/toml-rb/string.rb', line 23

def self.decode_unicode(str)
  [str[2..-1].to_i(16)].pack('U')
end

.parse_error(m) ⇒ Object



37
38
39
# File 'lib/toml-rb/string.rb', line 37

def self.parse_error(m)
  fail ParseError.new "Escape sequence #{m} is reserved"
end

.transform_escaped_chars(str) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/toml-rb/string.rb', line 27

def self.transform_escaped_chars(str)
  str.gsub(/\\(u[\da-fA-F]{4}|U[\da-fA-F]{8}|.)/) do |m|
    if m.size == 2
      SPECIAL_CHARS[m] || parse_error(m)
    else
      decode_unicode(m).force_encoding('UTF-8')
    end
  end
end

Instance Method Details

#valueObject



15
16
17
18
19
# File 'lib/toml-rb/string.rb', line 15

def value
  aux = TomlRB::BasicString.transform_escaped_chars first.value

  aux[1...-1]
end