mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* regex.c (is_in_list): should work weill with UTF-8.
* regex.c (re_match_exec): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3363 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									181edd12a0
								
							
						
					
					
						commit
						d242ae60d8
					
				
					 5 changed files with 55 additions and 26 deletions
				
			
		|  | @ -23,6 +23,12 @@ Sun Jan 19 23:08:18 2003  Akinori MUSHA  <knu@iDaemons.org> | |||
| 	  quotes should not be regarded as meta character.  This bug or | ||||
| 	  maybe feature was inherited from Perl's shellwords.pl. | ||||
| 
 | ||||
| Sun Jan 19 14:01:12 2003  UENO Katsuhiro  <unnie@blue.sky.or.jp> | ||||
| 
 | ||||
| 	* regex.c (is_in_list): should work weill with UTF-8. | ||||
| 
 | ||||
| 	* regex.c (re_match_exec): ditto. | ||||
| 
 | ||||
| Sat Jan 18 14:53:49 2003  Nobuyoshi Nakada  <nobu.nokada@softhome.net> | ||||
| 
 | ||||
| 	* bignum.c (rb_cstr_to_inum): should not erase all 0s, but | ||||
|  |  | |||
							
								
								
									
										5
									
								
								hash.c
									
										
									
									
									
								
							
							
						
						
									
										5
									
								
								hash.c
									
										
									
									
									
								
							|  | @ -101,10 +101,7 @@ rb_any_hash(a) | |||
|       default: | ||||
| 	DEFER_INTS; | ||||
| 	hval = rb_funcall(a, id_hash, 0); | ||||
| 	if (FIXNUM_P(hval)) { | ||||
| 	    hval %= 536870923; | ||||
| 	} | ||||
| 	else { | ||||
| 	if (!FIXNUM_P(hval)) { | ||||
| 	    hval = rb_funcall(hval, '%', 1, INT2FIX(536870923)); | ||||
| 	} | ||||
| 	ENABLE_INTS; | ||||
|  |  | |||
							
								
								
									
										25
									
								
								lib/cgi.rb
									
										
									
									
									
								
							
							
						
						
									
										25
									
								
								lib/cgi.rb
									
										
									
									
									
								
							|  | @ -942,21 +942,24 @@ convert string charset, and set language to "ja". | |||
|     private :initialize_query | ||||
| 
 | ||||
|     def [](key) | ||||
|       value = @params[key][0] | ||||
|       def value.to_ary | ||||
|         [self.dup] | ||||
|       end | ||||
|       def value.[](key) | ||||
|         $stderr.puts <<END | ||||
|       value, = @params[key] | ||||
|       unless value.nil? | ||||
| 	value = value.dup | ||||
| 	def value.to_ary | ||||
| 	  [self] | ||||
| 	end | ||||
| 	def value.[](key) | ||||
| 	  $stderr.puts <<END | ||||
| CAUTION! cgi['key'] == cgi.params['key'][0] If want Array, use cgi.params['key'] | ||||
| END | ||||
|         self | ||||
|       end | ||||
|       def value.first | ||||
|         $stderr.puts <<END | ||||
| 	  self | ||||
| 	end | ||||
| 	def value.first | ||||
| 	  $stderr.puts <<END | ||||
| CAUTION! cgi['key'] == cgi.params['key'][0] If want Array, use cgi.params['key'] | ||||
| END | ||||
|         self | ||||
| 	  self | ||||
| 	end | ||||
|       end | ||||
|       value | ||||
|     end | ||||
|  |  | |||
							
								
								
									
										44
									
								
								regex.c
									
										
									
									
									
								
							
							
						
						
									
										44
									
								
								regex.c
									
										
									
									
									
								
							|  | @ -698,7 +698,18 @@ set_list_bits(c1, c2, b) | |||
| } | ||||
| 
 | ||||
| static int | ||||
| is_in_list(c, b) | ||||
| is_in_list_sbc(c, b) | ||||
|     unsigned long c; | ||||
|     const unsigned char *b; | ||||
| { | ||||
|   unsigned short size; | ||||
| 
 | ||||
|   size = *b++; | ||||
|   return ((int)c / BYTEWIDTH < (int)size && b[c / BYTEWIDTH] & 1 << c % BYTEWIDTH); | ||||
| } | ||||
|    | ||||
| static int | ||||
| is_in_list_mbc(c, b) | ||||
|     unsigned long c; | ||||
|     const unsigned char *b; | ||||
| { | ||||
|  | @ -706,9 +717,6 @@ is_in_list(c, b) | |||
|   unsigned short i, j; | ||||
| 
 | ||||
|   size = *b++; | ||||
|   if ((int)c / BYTEWIDTH < (int)size && b[c / BYTEWIDTH] & 1 << c % BYTEWIDTH) { | ||||
|     return 1; | ||||
|   } | ||||
|   b += size + 2; | ||||
|   size = EXTRACT_UNSIGNED(&b[-2]); | ||||
|   if (size == 0) return 0; | ||||
|  | @ -727,6 +735,14 @@ is_in_list(c, b) | |||
|   return 0; | ||||
| } | ||||
| 
 | ||||
| static int | ||||
| is_in_list(c, b) | ||||
|     unsigned long c; | ||||
|     const unsigned char *b; | ||||
| { | ||||
|   return is_in_list_sbc(c, b) || is_in_list_mbc(c, b); | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| print_partial_compiled_pattern(start, end) | ||||
|     unsigned char *start; | ||||
|  | @ -3815,19 +3831,25 @@ re_match_exec(bufp, string_arg, size, pos, beg, regs) | |||
| 	  int cc, c; | ||||
| 
 | ||||
| 	  PREFETCH; | ||||
| 	  cc = c = (unsigned char)*d++; | ||||
| 	  c = (unsigned char)*d++; | ||||
| 	  if (ismbchar(c)) { | ||||
| 	    if (d + mbclen(c) - 1 <= dend) { | ||||
| 	      cc = c; | ||||
| 	      MBC2WC(c, d); | ||||
| 	      not = is_in_list_mbc(c, p); | ||||
| 	      if (!not) { | ||||
| 		part = not = is_in_list_sbc(cc, p); | ||||
| 	      } | ||||
| 	    } else { | ||||
| 	      not = is_in_list_sbc(c, p); | ||||
| 	    } | ||||
| 	  } | ||||
| 	  else if (TRANSLATE_P()) | ||||
| 	    cc = c = (unsigned char)translate[c]; | ||||
| 
 | ||||
| 	  not = is_in_list(c, p); | ||||
| 	  if (!not && cc != c) { | ||||
| 	      part = not = is_in_list(cc, p); | ||||
| 	  else { | ||||
| 	    if (TRANSLATE_P()) | ||||
| 	      c = (unsigned char)translate[c]; | ||||
| 	    not = is_in_list_sbc(c, p); | ||||
| 	  } | ||||
| 
 | ||||
| 	  if (*(p - 1) == (unsigned char)charset_not) { | ||||
| 	    not = !not; | ||||
| 	  } | ||||
|  |  | |||
|  | @ -375,6 +375,7 @@ r([1,2,[]]){next *[1,2]} | |||
| r([nil,nil,[]]){next *[*[]]} | ||||
| r([1,nil,[]]){next *[*[1]]} | ||||
| r([1,2,[]]){next *[*[1,2]]} | ||||
| 
 | ||||
| test_check "condition" | ||||
| 
 | ||||
| $x = '0'; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 matz
						matz