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