Changeset 164 for trunk/ext/hpricot_scan/hpricot_scan.java.rl
- Timestamp:
- 04/09/2008 22:32:36 (8 months ago)
- Files:
-
- 1 modified
-
trunk/ext/hpricot_scan/hpricot_scan.java.rl (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ext/hpricot_scan/hpricot_scan.java.rl
r163 r164 21 21 22 22 public void ELE(IRubyObject N) { 23 if (t okend > tokstart|| text) {23 if (te > ts || text) { 24 24 IRubyObject raw_string = runtime.getNil(); 25 25 ele_open = false; text = false; 26 if (t okstart!= -1 && N != cdata && N != sym_text && N != procins && N != comment) {27 raw_string = runtime.newString(new String(buf,t okstart,tokend-tokstart));26 if (ts != -1 && N != cdata && N != sym_text && N != procins && N != comment) { 27 raw_string = runtime.newString(new String(buf,ts,te-ts)); 28 28 } 29 29 rb_yield_tokens(N, tag[0], attr, raw_string, taint); … … 79 79 mark = mark_aval; 80 80 } 81 if(mark > t okstart) {81 if(mark > ts) { 82 82 if(N == tag) { 83 mark_tag -= t okstart;83 mark_tag -= ts; 84 84 } else if(N == akey) { 85 mark_akey -= t okstart;85 mark_akey -= ts; 86 86 } else if(N == aval) { 87 mark_aval -= t okstart;87 mark_aval -= ts; 88 88 } 89 89 } … … 95 95 attr = RubyHash.newHash(runtime); 96 96 } 97 ((RubyHash)attr).aset(K,V); 97 ((RubyHash)attr).op_aset(runtime.getCurrentContext(),K,V); 98 // ((RubyHash)attr).aset(K,V); 98 99 } 99 100 } … … 115 116 if(ele_open) { 116 117 ele_open = false; 117 if(t okstart> -1) {118 mark_tag = t okstart;118 if(ts > -1) { 119 mark_tag = ts; 119 120 } 120 121 } else { … … 184 185 } 185 186 186 include hpricot_common " ext/hpricot_scan/hpricot_common.rl";187 include hpricot_common "hpricot_common.rl"; 187 188 188 189 }%% … … 210 211 int cs, act, have = 0, nread = 0, curline = 1, p=-1; 211 212 boolean text = false; 212 int tokstart=-1, tokend; 213 int ts=-1, te; 214 int eof=-1; 213 215 char[] buf; 214 216 Ruby runtime; … … 300 302 if ( done && ele_open ) { 301 303 ele_open = false; 302 if(t okstart> -1) {303 mark_tag = t okstart;304 t okstart= -1;304 if(ts > -1) { 305 mark_tag = ts; 306 ts = -1; 305 307 text = true; 306 308 } 307 309 } 308 310 309 if(t okstart== -1) {311 if(ts == -1) { 310 312 have = 0; 311 /* text nodes have no t okstartbecause each byte is parsed alone */313 /* text nodes have no ts because each byte is parsed alone */ 312 314 if(mark_tag != -1 && text) { 313 315 if (done) { … … 322 324 mark_tag = 0; 323 325 } else { 324 have = pe - t okstart;325 System.arraycopy(buf,t okstart,buf,0,have);326 have = pe - ts; 327 System.arraycopy(buf,ts,buf,0,have); 326 328 SLIDE(tag); 327 329 SLIDE(akey); 328 330 SLIDE(aval); 329 t okend = (tokend - tokstart);330 t okstart= 0;331 te = (te - ts); 332 ts = 0; 331 333 } 332 334 } … … 359 361 public static void Init_hpricot_scan(Ruby runtime) { 360 362 RubyModule mHpricot = runtime.defineModule("Hpricot"); 361 mHpricot.getMetaClass().attr_accessor( new IRubyObject[]{runtime.newSymbol("buffer_size")});363 mHpricot.getMetaClass().attr_accessor(runtime.getCurrentContext(),new IRubyObject[]{runtime.newSymbol("buffer_size")}); 362 364 CallbackFactory fact = runtime.callbackFactory(HpricotScanService.class); 363 365 mHpricot.getMetaClass().defineMethod("scan",fact.getSingletonMethod("__hpricot_scan",IRubyObject.class));
