Module: QuotedStringSupport

Included in:
BlockSupport, BlockSupport::QuotedStringR
Defined in:
lib/statsailr/block_builder/sts_block.rb

Instance Method Summary collapse

Instance Method Details

#escape_backslashes(str) ⇒ Object



43
44
45
# File 'lib/statsailr/block_builder/sts_block.rb', line 43

def escape_backslashes(str)
  str.gsub("\\", "\\\\")
end

#interpret_escape_sequences(str) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/statsailr/block_builder/sts_block.rb', line 5

def interpret_escape_sequences(str)
  # This deals with escape sequences in double quoted string literals
  # The behavior should be same as libsailr (or datasailr)
  new_str = ""
  str_array = str.split(//)
  idx = 0
  while( idx < str_array.size) do
    c = str_array[idx]
    if(c == "\\")
      idx = idx + 1
      c = str_array[idx]
      raise "Tokenizer error: double quoted string literal should never end with \\" if idx >= str_array.size
      case c
      when 't'
        new_str << "\t"
      when 'n'
        new_str << "\n"
      when 'r'
        new_str << "\r"
      when "\\"
        new_str << "\\"
      when "\'"
        new_str << "\'"
      when "\""
        new_str << "\""
      when '?'
        new_str << '?'
      else
        new_str << c
      end
    else
      new_str << c
    end
    idx = idx + 1
  end
  return new_str
end