lib/rubocop/cop/style/string_literals.rb
# encoding: utf-8 module Rubocop module Cop module Style # Checks for uses of double quotes where single quotes would do. class StringLiterals < Cop MSG = "Prefer single-quoted strings when you don't need " + 'string interpolation or special symbols.' def on_str(node) # Constants like __FILE__ are handled as strings, # but don't respond to begin. return unless node.loc.respond_to?(:begin) # regex matches IF there is a ' or there is a \\ in the string that # is not preceeded/followed by another \\ (e.g. "\\x34") but not # "\\\\" if node.loc.expression.source !~ /('|([^\\]|\A)\\([^\\]|\Z))/ && node.loc.begin.is?('"') add_offence(:convention, node.loc.expression, MSG) do_autocorrect(node) end end alias_method :on_dstr, :ignore_node alias_method :on_regexp, :ignore_node def autocorrect_action(node) replace(node.loc.begin, "'") replace(node.loc.end, "'") end end end end end