module STSScannerSupport

Public Instance Methods

interpret_escape_sequences(str) click to toggle source
# File lib/statsailr/scanner/sts_scanner.rb, line 13
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