Class: RuboCop::StringInterpreter
- Inherits:
-
Object
- Object
- RuboCop::StringInterpreter
- Defined in:
- lib/rubocop/string_interpreter.rb
Overview
Take a string with embedded escapes, and convert the escapes as the Ruby interpreter would when reading a double-quoted string literal. For example, ā\nā will be converted to ānā.
Constant Summary collapse
- STRING_ESCAPES =
{ '\a' => "\a", '\b' => "\b", '\e' => "\e", '\f' => "\f", '\n' => "\n", '\r' => "\r", '\s' => ' ', '\t' => "\t", '\v' => "\v", "\\\n" => '' }.freeze
- STRING_ESCAPE_REGEX =
/\\(?: [abefnrstv\n] | # simple escapes (above) \d{1,3} | # octal byte escape x[0-9a-fA-F]{1,2} | # hex byte escape u[0-9a-fA-F]{4} | # unicode char escape u\{[^}]*\} | # extended unicode escape . # any other escaped char )/x.freeze
Class Method Summary collapse
Class Method Details
.interpret(string) ⇒ Object
21 22 23 24 25 26 |
# File 'lib/rubocop/string_interpreter.rb', line 21 def interpret(string) # We currently don't handle \cx, \C-x, and \M-x string.gsub(STRING_ESCAPE_REGEX) do |escape| STRING_ESCAPES[escape] || interpret_string_escape(escape) end end |