diff options
author | eban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-09-06 08:12:24 +0000 |
---|---|---|
committer | eban <eban@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2001-09-06 08:12:24 +0000 |
commit | fce2bf70a2ef7129b68f8660ce6fdb2a4296667a (patch) | |
tree | 6ef8ac9eb6e1aa4cf4c6d907af5a74d8a62e9fd7 /lib | |
parent | 970dbfde6f041de3660f5822bd486663742aeef3 (diff) |
* lib/jcode.rb: fixup quote handing.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1738 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r-- | lib/jcode.rb | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/lib/jcode.rb b/lib/jcode.rb index c3c3ad1001..0d796a2b01 100644 --- a/lib/jcode.rb +++ b/lib/jcode.rb @@ -9,7 +9,7 @@ class String printf STDERR, "feel free for some warnings:\n" if $VERBOSE def _regex_quote(str) - str.gsub(/(\\[-\\])|\\(.)|([][\\])/) do + str.gsub(/(\\[][\-\\])|\\(.)|([][\\])/) do $1 || $2 || '\\' + $3 end end @@ -97,15 +97,18 @@ class String def _expand_ch str a = [] - str.scan(/(?:\\([-\\]))|(.)-(.)|(.)/m) do - if s = $1 || $4 - a.push s - elsif $2.length != $3.length + str.scan(/(?:\\(.)|([^\\]))-(?:\\(.)|([^\\]))|(?:\\(.)|(.))/m) do + from = $1 || $2 + to = $3 || $4 + one = $5 || $6 + if one + a.push one + elsif from.length != to.length next - elsif $2.length == 1 - $2[0].upto($3[0]) { |c| a.push c.chr } + elsif from.length == 1 + from[0].upto(to[0]) { |c| a.push c.chr } else - $2.upto($3) { |c| a.push c } + from.upto(to) { |c| a.push c } end end a |