lib/string_escape_zsh.rb in builtinextension-0.0.2 vs lib/string_escape_zsh.rb in builtinextension-0.0.3

- old
+ new

@@ -1,24 +1,24 @@ #! /usr/bin/ruby -w class String - - #zsh で特殊な意味を持つ文字をバックスラッシュでエスケープする。 - def escape_zsh - temp = dup - temp.gsub!('\\', '\\\\\\') #最初にしないと他の結果をさらに置換してしまう - #temp.gsub!('/', '/') #「/」はディレクトリ区切り文字なのでエスケープしない - temp.gsub!(' ', '\ ') ; temp.gsub!('!', '\!') ; temp.gsub!('"', '\"') ; - temp.gsub!('#', '\#') ; temp.gsub!('$', '\$') ; temp.gsub!('%', '\%') ; - temp.gsub!(')', '\)') ; temp.gsub!('(', '\(') ; temp.gsub!('*', '\*') ; - temp.gsub!(',', '\,') ; #temp.gsub!('-', '\-') ; #temp.gsub!('.', '\.') ; - temp.gsub!(':', '\:') ; temp.gsub!(';', '\;') ; temp.gsub!('<', '\<') ; - temp.gsub!('=', '\=') ; temp.gsub!('>', '\>') ; temp.gsub!('?', '\?') ; - temp.gsub!('@', '\@') ; temp.gsub!('[', '\[') ; temp.gsub!(']', '\]') ; - temp.gsub!('^', '\^') ; temp.gsub!('_', '\_') ; temp.gsub!('{', '\{') ; - temp.gsub!('|', '\|') ; temp.gsub!('}', '\}') ; temp.gsub!('~', '\~') ; - temp.gsub!('`', '\\\`') ; temp.gsub!('&', '\\\&') ; - temp.gsub!('+', '\\\+') ; temp.gsub!("'", "\\\\'") ; - return temp - end + + # Add backslash escape at the characters that have perticular meaning in zsh. + def escape_zsh + temp = dup + temp.gsub!('\\', '\\\\\\') # This must be at first, not to substitute other results. + #temp.gsub!('/', '/') # / is not for escape, due to directory separator. + temp.gsub!(' ', '\ ') ; temp.gsub!('!', '\!') ; temp.gsub!('"', '\"') ; + temp.gsub!('#', '\#') ; temp.gsub!('$', '\$') ; temp.gsub!('%', '\%') ; + temp.gsub!(')', '\)') ; temp.gsub!('(', '\(') ; temp.gsub!('*', '\*') ; + temp.gsub!(',', '\,') ; #temp.gsub!('-', '\-') ; #temp.gsub!('.', '\.') ; + temp.gsub!(':', '\:') ; temp.gsub!(';', '\;') ; temp.gsub!('<', '\<') ; + temp.gsub!('=', '\=') ; temp.gsub!('>', '\>') ; temp.gsub!('?', '\?') ; + temp.gsub!('@', '\@') ; temp.gsub!('[', '\[') ; temp.gsub!(']', '\]') ; + temp.gsub!('^', '\^') ; temp.gsub!('_', '\_') ; temp.gsub!('{', '\{') ; + temp.gsub!('|', '\|') ; temp.gsub!('}', '\}') ; temp.gsub!('~', '\~') ; + temp.gsub!('`', '\\\`') ; temp.gsub!('&', '\\\&') ; + temp.gsub!('+', '\\\+') ; temp.gsub!("'", "\\\\'") ; + return temp + end end