Package

Source Code of HpricotScanService

// line 1 "ext/hpricot_scan/hpricot_scan.java.rl"

import java.io.IOException;

import org.jruby.Ruby;
import org.jruby.RubyClass;
import org.jruby.RubyHash;
import org.jruby.RubyModule;
import org.jruby.RubyNumeric;
import org.jruby.RubyObjectAdapter;
import org.jruby.RubyString;
import org.jruby.javasupport.JavaEmbedUtils;
import org.jruby.runtime.Block;
import org.jruby.runtime.CallbackFactory;
import org.jruby.runtime.builtin.IRubyObject;
import org.jruby.exceptions.RaiseException;
import org.jruby.runtime.load.BasicLibraryService;

public class HpricotScanService implements BasicLibraryService {
       public static String NO_WAY_SERIOUSLY="*** This should not happen, please send a bug report with the HTML you're parsing to why@whytheluckystiff.net.  So sorry!";
       private static RubyObjectAdapter rubyApi;

       public void ELE(IRubyObject N) {
         if (te > ts || text) {
           IRubyObject raw_string = runtime.getNil();
           ele_open = false; text = false;
           if (ts != -1 && N != cdata && N != sym_text && N != procins && N != comment) {
             raw_string = runtime.newString(new String(buf,ts,te-ts));
           }
           rb_yield_tokens(N, tag[0], attr, raw_string, taint);
         }
       }

       public void SET(IRubyObject[] N, int E) {
         int mark = 0;
         if(N == tag) {
           if(mark_tag == -1 || E == mark_tag) {
             tag[0] = runtime.newString("");
           } else if(E > mark_tag) {
             tag[0] = runtime.newString(new String(buf,mark_tag, E-mark_tag));
           }
         } else if(N == akey) {
           if(mark_akey == -1 || E == mark_akey) {
             akey[0] = runtime.newString("");
           } else if(E > mark_akey) {
             akey[0] = runtime.newString(new String(buf,mark_akey, E-mark_akey));
           }
         } else if(N == aval) {
           if(mark_aval == -1 || E == mark_aval) {
             aval[0] = runtime.newString("");
           } else if(E > mark_aval) {
             aval[0] = runtime.newString(new String(buf,mark_aval, E-mark_aval));
           }
         }
       }

       public void CAT(IRubyObject[] N, int E) {
         if(N[0].isNil()) {
           SET(N,E);
         } else {
           int mark = 0;
           if(N == tag) {
             mark = mark_tag;
           } else if(N == akey) {
             mark = mark_akey;
           } else if(N == aval) {
             mark = mark_aval;
           }
           ((RubyString)(N[0])).append(runtime.newString(new String(buf, mark, E-mark)));
         }
       }

       public void SLIDE(Object N) {
           int mark = 0;
           if(N == tag) {
             mark = mark_tag;
           } else if(N == akey) {
             mark = mark_akey;
           } else if(N == aval) {
             mark = mark_aval;
           }
           if(mark > ts) {
             if(N == tag) {
               mark_tag  -= ts;
             } else if(N == akey) {
               mark_akey -= ts;
             } else if(N == aval) {
               mark_aval -= ts;
             }
           }
       }

       public void ATTR(IRubyObject K, IRubyObject V) {
         if(!K.isNil()) {
           if(attr.isNil()) {
             attr = RubyHash.newHash(runtime);
           }
           ((RubyHash)attr).op_aset(runtime.getCurrentContext(),K,V);
           // ((RubyHash)attr).aset(K,V);
         }
       }

       public void ATTR(IRubyObject[] K, IRubyObject V) {
         ATTR(K[0],V);
       }

       public void ATTR(IRubyObject K, IRubyObject[] V) {
         ATTR(K,V[0]);
       }

       public void ATTR(IRubyObject[] K, IRubyObject[] V) {
         ATTR(K[0],V[0]);
       }

       public void TEXT_PASS() {
         if(!text) {
           if(ele_open) {
             ele_open = false;
             if(ts > -1) {
               mark_tag = ts;
             }
           } else {
             mark_tag = p;
           }
           attr = runtime.getNil();
           tag[0] = runtime.getNil();
           text = true;
         }
       }

       public void EBLK(IRubyObject N, int T) {
         CAT(tag, p - T + 1);
         ELE(N);
       }


       public void rb_raise(RubyClass error, String message) {
              throw new RaiseException(runtime, error, message, true);
       }

       public IRubyObject rb_str_new2(String s) {
              return runtime.newString(s);
       }

// line 189 "ext/hpricot_scan/hpricot_scan.java.rl"



// line 150 "ext/hpricot_scan/HpricotScanService.java"
private static byte[] init__hpricot_scan_actions_0()
{
  return new byte [] {
      0,    1,    1,    1,    2,    1,    4,    1,    5,    1,    6,    1,
      7,    1,    8,    1,    9,    1,   10,    1,   11,    1,   12,    1,
     14,    1,   16,    1,   20,    1,   21,    1,   22,    1,   24,    1,
     25,    1,   26,    1,   28,    1,   29,    1,   30,    1,   32,    1,
     33,    1,   38,    1,   39,    1,   40,    1,   41,    1,   42,    1,
     43,    1,   44,    1,   45,    1,   46,    1,   47,    1,   48,    1,
     49,    1,   50,    1,   51,    2,    2,    5,    2,    2,    6,    2,
      2,   11,    2,    2,   12,    2,    2,   14,    2,    4,   39,    2,
      4,   40,    2,    4,   41,    2,    5,    2,    2,    6,   14,    2,
      7,    6,    2,    7,   14,    2,   11,   12,    2,   13,    3,    2,
     14,    6,    2,   14,   40,    2,   15,   24,    2,   15,   28,    2,
     15,   32,    2,   15,   45,    2,   17,   23,    2,   18,   27,    2,
     19,   31,    2,   22,   34,    2,   22,   36,    3,    2,    6,   14,
      3,    2,   14,    6,    3,    6,    7,   14,    3,    6,   14,   40,
      3,    7,   14,   40,    3,   11,    2,   12,    3,   14,    6,   40,
      3,   14,   13,    3,    3,   22,    0,   37,    3,   22,    2,   34,
      3,   22,   14,   35,    4,    2,   14,   13,    3,    4,    6,    7,
     14,   40,    4,   22,    2,   14,   35,    4,   22,    6,   14,   35,
      4,   22,    7,   14,   35,    4,   22,   14,    6,   35,    5,   22,
      2,    6,   14,   35,    5,   22,    2,   14,    6,   35,    5,   22,
      6,    7,   14,   35
  };
}

private static final byte _hpricot_scan_actions[] = init__hpricot_scan_actions_0();


private static short[] init__hpricot_scan_key_offsets_0()
{
  return new short [] {
      0,    3,    4,    5,    6,    7,    8,    9,   10,   13,   22,   37,
     44,   45,   46,   47,   48,   49,   52,   57,   69,   81,   86,   93,
     94,   95100101105106107121135152169186,
    203210212214220222227232238240245251,
    265266267268269270271272273274275276,
    282296300313326340354355366375388405,
    423441450461480499510521536538540556,
    572575587599619639658677697717728739,
    751763775791794809811813829845848860,
    871890910930941952964984, 1004, 1016, 1036, 1057,
   1074, 1091, 1095, 1098, 1110, 1122, 1142, 1162, 1182, 1194, 1206, 1226,
   1242, 1258, 1270, 1291, 1310, 1313, 1328, 1340, 1355, 1358, 1369, 1371,
   1373, 1384, 1391, 1404, 1418, 1432, 1445, 1446, 1447, 1448, 1449, 1450,
   1451, 1455, 1460, 1469, 1479, 1484, 1491, 1492, 1493, 1494, 1495, 1496,
   1497, 1498, 1499, 1503, 1508, 1512, 1522, 1527, 1533, 1534, 1535, 1536,
   1537, 1538, 1539, 1540, 1541, 1542, 1546, 1551, 1553, 1554, 1555, 1560,
   1561, 1562, 1564, 1565, 1566, 1567, 1568, 1572, 1582, 1591, 1601, 1602,
   1603, 1605, 1614, 1615, 1616, 1617, 1619, 1621, 1624, 1627, 1631, 1633,
   1634, 1636, 1637, 1640
  };
}

private static final short _hpricot_scan_key_offsets[] = init__hpricot_scan_key_offsets_0();


private static char[] init__hpricot_scan_trans_keys_0()
{
  return new char [] {
     45,   68,   91,   45,   79,   67,   84,   89,   80,   69,   32,    9,
     13,   32,   58,   95,    9,   13,   65,   90,   97122,   32,   62,
     63,   91,   95,    9,   13,   45,   46,   48,   58,   65,   90,   97,
    122,   32,   62,   80,   83,   91,    9,   13,   85,   66,   76,   73,
     67,   32,    9,   13,   32,   34,   39,    9,   13,    9,   34,   61,
     95,   32,   37,   39,   59,   63,   90,   97122,    9,   34,   61,
     95,   32,   37,   39,   59,   63,   90,   97122,   32,   62,   91,
      9,   13,   32,   34,   39,   62,   91,    9,   13,   34,   34,   32,
     62,   91,    9,   13,   93,   32,   62,    9,   13,   39,   39,    9,
     39,   61,   95,   32,   33,   35,   37,   40,   59,   63,   90,   97,
    122,    9,   39,   61,   95,   32,   33,   35,   37,   40,   59,   63,
     90,   97122,    9,   32,   33,   39,   62,   91,   95,   10,   13,
     35,   37,   40,   59,   61,   90,   97122,    9,   32,   34,   39,
     62,   91,   95,   10,   13,   33,   37,   40,   59,   61,   90,   97,
    122,    9,   32,   33,   39,   62,   91,   95,   10,   13,   35,   37,
     40,   59,   61,   90,   97122,    9,   32,   34,   39,   62,   91,
     95,   10,   13,   33,   37,   40,   59,   61,   90,   97122,   32,
     34,   39,   62,   91,    9,   13,   34,   39,   34,   39,   32,   39,
     62,   91,    9,   13,   39,   93,   32,   62,   93,    9,   13,   32,
     39,   62,    9,   13,   32,   34,   62,   91,    9,   13,   34,   93,
     32,   34,   62,    9,   13,   32,   39,   62,   91,    9,   13,    9,
     39,   61,   95,   32,   33,   35,   37,   40,   59,   63,   90,   97,
    122,   89,   83,   84,   69,   77,   67,   68,   65,   84,   65,   91,
     58,   95,   65,   90,   97122,   32,   62,   63,   95,    9,   13,
     45,   46,   48,   58,   65,   90,   97122,   32,   62,    9,   13,
     32,   47,   62,   63,   95,    9,   13,   45,   58,   65,   90,   97,
    122,   32,   47,   62,   63,   95,    9,   13,   45,   58,   65,   90,
     97122,   32,   47,   61,   62,   63,   95,    9,   13,   45,   58,
     65,   90,   97122,   32,   47,   61,   62,   63,   95,    9,   13,
     45,   58,   65,   90,   97122,   62,   13,   32,   34,   39,   47,
     60,   62,    9,   10,   11,   12,   13,   32,   47,   60,   62,    9,
     10,   11,   12,   32,   47,   62,   63,   95,    9,   13,   45,   58,
     65,   90,   97122,   13,   32,   47,   60,   62,   63,   95,    9,
     10,   11,   12,   45,   58,   65,   90,   97122,   13,   32,   47,
     60,   61,   62,   63,   95,    9,   10,   11,   12,   45,   58,   65,
     90,   97122,   13,   32,   47,   60,   61,   62,   63,   95,    9,
     10,   11,   12,   45,   58,   65,   90,   97122,   13,   32,   47,
     60,   62,    9,   10,   11,   12,   13,   32,   34,   39,   47,   60,
     62,    9,   10,   11,   12,   13,   32,   34,   39,   47,   60,   62,
     63,   95,    9,   10,   11,   12,   45,   58,   65,   90,   97122,
     13,   32,   34,   39,   47,   60,   62,   63,   95,    9,   10,   11,
     12,   45,   58,   65,   90,   97122,   13,   32,   34,   47,   60,
     62,   92,    9,   10,   11,   12,   13,   32,   34,   47,   60,   62,
     92,    9,   10,   11,   12,   32,   34,   47,   62,   63,   92,   95,
      9,   13,   45,   58,   65,   90,   97122,   34,   92,   34,   92,
     32,   34,   47,   61,   62,   63,   92,   95,    9,   13,   45,   58,
     65,   90,   97122,   32,   34,   47,   61,   62,   63,   92,   95,
      9,   13,   45,   58,   65,   90,   97122,   34,   62,   92,   13,
     32,   34,   39,   47,   60,   62,   92,    9,   10,   11,   12,   13,
     32,   34,   39,   47,   60,   62,   92,    9,   10,   11,   12,   13,
     32,   34,   39,   47,   60,   62,   63,   92,   95,    9,   10,   11,
     12,   45,   58,   65,   90,   97122,   13,   32,   34,   39,   47,
     60,   62,   63,   92,   95,    9,   10,   11,   12,   45,   58,   65,
     90,   97122,   13,   32,   34,   47,   60,   62,   63,   92,   95,
      9,   10,   11,   12,   45,   58,   65,   90,   97122,   13,   32,
     34,   47,   60,   62,   63,   92,   95,    9,   10,   11,   12,   45,
     58,   65,   90,   97122,   13,   32,   34,   47,   60,   61,   62,
     63,   92,   95,    9,   10,   11,   12,   45,   58,   65,   90,   97,
    122,   13,   32,   34,   47,   60,   61,   62,   63,   92,   95,    9,
     10,   11,   12,   45,   58,   65,   90,   97122,   13,   32,   34,
     47,   60,   62,   92,    9,   10,   11,   12,   13,   32,   34,   47,
     60,   62,   92,    9,   10,   11,   12,   13,   32,   34,   39,   47,
     60,   62,   92,    9,   10,   11,   12,   13,   32,   34,   39,   47,
     60,   62,   92,    9,   10,   11,   12,   13,   32,   34,   39,   47,
     60,   62,   92,    9,   10,   11,   12,   32,   34,   39,   47,   62,
     63,   92,   95,    9,   13,   45,   58,   65,   90,   97122,   34,
     39,   92,   32,   39,   47,   62,   63,   92,   95,    9,   13,   45,
     58,   65,   90,   97122,   39,   92,   39,   92,   32,   39,   47,
     61,   62,   63,   92,   95,    9,   13,   45,   58,   65,   90,   97,
    122,   32,   39,   47,   61,   62,   63,   92,   95,    9,   13,   45,
     58,   65,   90,   97122,   39,   62,   92,   13,   32,   34,   39,
     47,   60,   62,   92,    9,   10,   11,   12,   13,   32,   39,   47,
     60,   62,   92,    9,   10,   11,   12,   13,   32,   39,   47,   60,
     62,   63,   92,   95,    9,   10,   11,   12,   45,   58,   65,   90,
     97122,   13,   32,   39,   47,   60,   61,   62,   63,   92,   95,
      9,   10,   11,   12,   45,   58,   65,   90,   97122,   13,   32,
     39,   47,   60,   61,   62,   63,   92,   95,    9,   10,   11,   12,
     45,   58,   65,   90,   97122,   13,   32,   39,   47,   60,   62,
     92,    9,   10,   11,   12,   13,   32,   39,   47,   60,   62,   92,
      9,   10,   11,   12,   13,   32,   34,   39,   47,   60,   62,   92,
      9,   10,   11,   12,   13,   32,   34,   39,   47,   60,   62,   63,
     92,   95,    9,   10,   11,   12,   45,   58,   65,   90,   97122,
     13,   32,   34,   39,   47,   60,   62,   63,   92,   95,    9,   10,
     11,   12,   45,   58,   65,   90,   97122,   13,   32,   34,   39,
     47,   60,   62,   92,    9,   10,   11,   12,   13,   32,   34,   39,
     47,   60,   62,   63,   92,   95,    9,   10,   11,   12,   45,   58,
     65,   90,   97122,   13,   32,   34,   39,   47,   60,   61,   62,
     63,   92,   95,    9,   10,   11,   12,   45,   58,   65,   90,   97,
    122,   32,   34,   39,   47,   61,   62,   63,   92,   95,    9,   13,
     45,   58,   65,   90,   97122,   32,   34,   39,   47,   61,   62,
     63,   92,   95,    9,   13,   45,   58,   65,   90,   97122,   34,
     39,   62,   92,   34,   39,   92,   13,   32,   34,   39,   47,   60,
     62,   92,    9,   10,   11,   12,   13,   32,   34,   39,   47,   60,
     62,   92,    9,   10,   11,   12,   13,   32,   34,   39,   47,   60,
     62,   63,   92,   95,    9,   10,   11,   12,   45,   58,   65,   90,
     97122,   13,   32,   34,   39,   47,   60,   62,   63,   92,   95,
      9,   10,   11,   12,   45,   58,   65,   90,   97122,   13,   32,
     34,   39,   47,   60,   62,   63,   92,   95,    9,   10,   11,   12,
     45,   58,   65,   90,   97122,   13,   32,   34,   39,   47,   60,
     62,   92,    9,   10,   11,   12,   13,   32,   34,   39,   47,   60,
     62,   92,    9,   10,   11,   12,   13,   32,   34,   39,   47,   60,
     62,   63,   92,   95,    9,   10,   11,   12,   45,   58,   65,   90,
     97122,   32,   34,   39,   47,   62,   63,   92,   95,    9,   13,
     45,   58,   65,   90,   97122,   32,   34,   39,   47,   62,   63,
     92,   95,    9,   13,   45,   58,   65,   90,   97122,   13,   32,
     34,   39,   47,   60,   62,   92,    9,   10,   11,   12,   13,   32,
     34,   39,   47,   60,   61,   62,   63,   92,   95,    9,   10,   11,
     12,   45,   58,   65,   90,   97122,   13,   32,   39,   47,   60,
     62,   63,   92,   95,    9,   10,   11,   12,   45,   58,   65,   90,
     97122,   34,   39,   92,   32,   39,   47,   62,   63,   92,   95,
      9,   13,   45,   58,   65,   90,   97122,   13,   32,   34,   39,
     47,   60,   62,   92,    9,   10,   11,   12,   32,   34,   47,   62,
     63,   92,   95,    9,   13,   45,   58,   65,   90,   97122,   34,
     39,   92,   13,   32,   39,   47,   60,   62,   92,    9,   10,   11,
     12,   34,   92,   39,   92,   13,   32,   34,   39,   47,   60,   62,
      9,   10,   11,   12,   58,   95120,   65,   90,   97122,   32,
     63,   95,    9,   13,   45,   46,   48,   58,   65,   90,   97122,
     32,   63,   95109,    9,   13,   45,   46,   48,   58,   65,   90,
     97122,   32,   63,   95108,    9,   13,   45,   46,   48,   58,
     65,   90,   97122,   32,   63,   95,    9,   13,   45,   46,   48,
     58,   65,   90,   97122101114115105111110,   32,
     61,    9,   13,   32,   34,   39,    9,   13,   95,   45,   46,   48,
     58,   65,   90,   97122,   34,   95,   45,   46,   48,   58,   65,
     90,   97122,   32,   62,   63,    9,   13,   32,   62,   63101,
    115,    9,   13,   62110,   99111100105110103,   32,
     61,    9,   13,   32,   34,   39,    9,   13,   65,   90,   97122,
     34,   95,   45,   46,   48,   57,   65,   90,   97122,   32,   62,
     63,    9,   13,   32,   62,   63115,    9,   13116,   97110,
    100,   97108111110101,   32,   61,    9,   13,   32,   34,
     39,    9,   13110121111,   34,   32,   62,   63,    9,   13,
    101115110121111,   39101115,   65,   90,   97122,
     39,   95,   45,   46,   48,   57,   65,   90,   97122,   95,   45,
     46,   48,   58,   65,   90,   97122,   39,   95,   45,   46,   48,
     58,   65,   90,   97122,   62,   62,   10,   60,   33,   47,   58,
     63,   95,   65,   90,   97122,   39,   93,   34,   34,   92,   39,
     92,   34,   39,   92,   32,    9,   13,   32118,    9,   13,   10,
     45,   45,   10,   93,   93,   10,   62,   63,   62,    0
  };
}

private static final char _hpricot_scan_trans_keys[] = init__hpricot_scan_trans_keys_0();


private static byte[] init__hpricot_scan_single_lengths_0()
{
  return new byte [] {
      3,    1,    1,    1,    1,    1,    1,    1,    1,    3,    5,    5,
      1,    1,    1,    1,    1,    1,    3,    4,    4,    3,    5,    1,
      1,    3,    1,    2,    1,    1,    4,    4,    7,    7,    7,    7,
      5,    2,    2,    4,    2,    3,    3,    4,    2,    3,    4,    4,
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
      4,    2,    5,    5,    6,    6,    1,    7,    5,    5,    7,    8,
      8,    5,    7,    9,    9,    7,    7,    7,    2,    2,    8,    8,
      3,    8,    8,   10,   10,    9,    9,   10,   10,    7,    7,    8,
      8,    8,    8,    3,    7,    2,    2,    8,    8,    3,    8,    7,
      9,   10,   10,    7,    7,    8,   10,   10,    8,   10,   11,    9,
      9,    4,    3,    8,    8,   10,   10,   10,    8,    8,   10,    8,
      8,    8,   11,    9,    3,    7,    8,    7,    3,    7,    2,    2,
      7,    3,    3,    4,    4,    3,    1,    1,    1,    1,    1,    1,
      2,    3,    1,    2,    3,    5,    1,    1,    1,    1,    1,    1,
      1,    1,    2,    3,    0,    2,    3,    4,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    2,    3,    2,    1,    1,    3,    1,
      1,    2,    1,    1,    1,    1,    0,    2,    1,    2,    1,    1,
      2,    5,    1,    1,    1,    2,    2,    3,    1,    2,    2,    1,
      2,    1,    3,    1
  };
}

private static final byte _hpricot_scan_single_lengths[] = init__hpricot_scan_single_lengths_0();


private static byte[] init__hpricot_scan_range_lengths_0()
{
  return new byte [] {
      0,    0,    0,    0,    0,    0,    0,    0,    1,    3,    5,    1,
      0,    0,    0,    0,    0,    1,    1,    4,    4,    1,    1,    0,
      0,    1,    0,    1,    0,    0,    5,    5,    5,    5,    5,    5,
      1,    0,    0,    1,    0,    1,    1,    1,    0,    1,    1,    5,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    2,
      5,    1,    4,    4,    4,    4,    0,    2,    2,    4,    5,    5,
      5,    2,    2,    5,    5,    2,    2,    4,    0,    0,    4,    4,
      0,    2,    2,    5,    5,    5,    5,    5,    5,    2,    2,    2,
      2,    2,    4,    0,    4,    0,    0,    4,    4,    0,    2,    2,
      5,    5,    5,    2,    2,    2,    5,    5,    2,    5,    5,    4,
      4,    0,    0,    2,    2,    5,    5,    5,    2,    2,    5,    4,
      4,    2,    5,    5,    0,    4,    2,    4,    0,    2,    0,    0,
      2,    2,    5,    5,    5,    5,    0,    0,    0,    0,    0,    0,
      1,    1,    4,    4,    1,    1,    0,    0,    0,    0,    0,    0,
      0,    0,    1,    1,    2,    4,    1,    1,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    1,    1,    0,    0,    0,    1,    0,
      0,    0,    0,    0,    0,    0,    2,    4,    4,    4,    0,    0,
      0,    2,    0,    0,    0,    0,    0,    0,    1,    1,    0,    0,
      0,    0,    0,    0
  };
}

private static final byte _hpricot_scan_range_lengths[] = init__hpricot_scan_range_lengths_0();


private static short[] init__hpricot_scan_index_offsets_0()
{
  return new short [] {
      0,    4,    6,    8,   10,   12,   14,   16,   18,   21,   28,   39,
     46,   48,   50,   52,   54,   56,   59,   64,   73,   82,   87,   94,
     96,   98103105109111113123133146159172,
    185192195198204207212217223226231237,
    247249251253255257259261263265267269,
    274284288298308319330332342350360373,
    387401409419434449459469481484487500,
    513517528539555571586601617633643653,
    664675686699703715718721734747751762,
    772787803819829839850866882893909926,
    940954959963974985, 1001, 1017, 1033, 1044, 1055, 1071,
   1084, 1097, 1108, 1125, 1140, 1144, 1156, 1167, 1179, 1183, 1193, 1196,
   1199, 1209, 1215, 1224, 1234, 1244, 1253, 1255, 1257, 1259, 1261, 1263,
   1265, 1269, 1274, 1280, 1287, 1292, 1299, 1301, 1303, 1305, 1307, 1309,
   1311, 1313, 1315, 1319, 1324, 1327, 1334, 1339, 1345, 1347, 1349, 1351,
   1353, 1355, 1357, 1359, 1361, 1363, 1367, 1372, 1375, 1377, 1379, 1384,
   1386, 1388, 1391, 1393, 1395, 1397, 1399, 1402, 1409, 1415, 1422, 1424,
   1426, 1429, 1437, 1439, 1441, 1443, 1446, 1449, 1453, 1456, 1460, 1463,
   1465, 1468, 1470, 1474
  };
}

private static final short _hpricot_scan_index_offsets[] = init__hpricot_scan_index_offsets_0();


private static short[] init__hpricot_scan_indicies_0()
{
  return new short [] {
      1,    2,    3,    0,    4,    0,    5,    0,    6,    0,    7,    0,
      8,    0,    9,    0,   10,    0,   11,   11,    0,   11,   12,   12,
     11,   12,   12,    0,   13,   15,   14,   16,   14,   13,   14,   14,
     14,   14,    0,   17,   18,   19,   20,   21,   17,    0,   22,    0,
     23,    0,   24,    0,   25,    0,   26,    0,   27,   27,    0,   27,
     28,   29,   27,    0,   30,   31,   30,   30,   30,   30,   30,   30,
      0,   32,   33,   32,   32,   32,   32,   32,   32,    0,   34,   18,
     21,   34,    0,   34,   35,   36,   18,   21,   34,    0,   38,   37,
     41,   40,   42,   18,   21,   42,   39,   43,   21,   43,   18,   43,
     39,   38,   44,   41,   45,   46,   47,   46,   46,   46,   46,   46,
     46,   46,    0,   48,   49,   48,   48,   48,   48,   48,   48,   48,
      0,   50,   50,   48,   49,   18,   21,   48,   34,   48,   48,   48,
     48,    0,   50,   50,   35,   51,   18,   21,   48,   34,   48,   48,
     48,   48,    0,   52,   52,   54,   55,   56,   57,   54,   53,   54,
     54,   54,   54,   44,   58,   58,   61,   62,   63,   64,   60,   59,
     60,   60,   60,   60,   45,   59,   61,   65,   63,   64,   59,   45,
     67,   68,   66,   70,   71,   69,   72,   41,   63,   64,   72,   45,
     73,   74,   64,   75,   76,   43,   75,   21,   74,   41,   63,   74,
     45,   77,   41,   78,   79,   77,   40,   73,   80,   79,   80,   41,
     78,   80,   40,   81,   38,   56,   57,   81,   44,   60,   82,   60,
     60,   60,   60,   60,   60,   60,   45,   83,    0,   84,    0,   85,
      0,   86,    0,   87,    0,   88,    0,   89,    0,   90,    0,   91,
      0,   92,    0,   93,    0,   94,   94,   94,   94,    0,   95,   97,
     96,   96,   95,   96,   96,   96,   96,    0,   98,   99,   98,    0,
    100102103101101100101101101,    0104106,
    107105105104105105105,    0108110111112,
    109109108109109109,   39113115116117114,
    114113114114114,   39118,   39120120122123,
    124,   39117120121119126126128,   39129126,
    127125130115117114114130114114114,   39,
    126126132,   39133131131126127131131131,
    125134134137,   39138139136136134135136,
    136136125140140132,   39142133131131140,
    141131131131125126126128,   39129126127,
    125143143145146147,   39129143144119148,
    148122123124,   39117150150148149150150,
    150119143143145146151,   39133150150143,
    144150150150119153153155156157158159,
    153154152161161163164165166167161162,
    160168169171172170173170168170170170,
    165169173165174173165175169177178179,
    176173176175176176176165180169171181,
    172170173170180170170170165169182173,
    165183183185186187165172159183184152,
    188188185186187165172159188189152188,
    188185186187165172190159190188189190,
    190190152191191193194195165196190159,
    190191192190190190152153153155195157,
    197190159190153154190190190152161161,
    163199165196198167198161162198198198,
    160200200163203165204205202167202200,
    201202202202160206206163199165208196,
    198167198206207198198198160161161163,
    164165166167161162160161161209164165,
    166167161162160191191193194156165166,
    159191192152211211213214215216217218,
    211212210220220222209223224225226220,
    221219227228174230231229232229227229,
    229229224228174232224234169236237235,
    238235234235235235233169238233228238,
    233239169241242243240238240239240240,
    240233244169236245237235238235244235,
    235235233169246238233248248250251252,
    233237253248249247255255163257233258,
    259255256254255255163261233262260259,
    260255256260260260254263263163266233,
    267268265259265263264265265265254269,
    269163261233271262260259260269270260,
    260260254255255163257233258259255256,
    254255255222257233258259255256254272,
    272274275276233258253272273247277277,
    250251252233237279253279277278279279,
    279247272272274275280233262279253279,
    272273279279279247211211281214215216,
    217218211212210220220222209283224284,
    282226282220221282282282219285285222,
    209288224289290287226287285286287287,
    287219291228174230292231229232229291,
    229229229224293228174295296297294232,
    294293294294294224228174298232224299,
    299232224300300302303304224231218300,
    301210305305302303304224231218305306,
    210305305302303304224231307218307305,
    306307307307210308308310311312224284,
    307218307308309307307307210211211281,
    214312216313307218307211212307307307,
    210220220222209223224225226220221219,
    220220314314223224225226220221219211,
    211213214312216313307218307211212307,
    307307210315316317319320318321318315,
    318318318216315322317319320318321318,
    315318318318216308308310311215224225,
    218308309210323323222209283224325284,
    282226282323324282282282219326326155,
    280328329279253279326327279279279247,
    316317321216330331333334332335332330,
    332332332328277277250251252233237253,
    277278247336331338339337340337336337,
    337337157322317321216326326155276328,
    341253326327247331340157331335328148,
    148122123124,   39117148149119342342343,
    342342,    0344345345344345345345345,    0,
    344345345346344345345345345,    0344345,
    345347344345345345345,    0348345345348,
    345345345345,    0350349351349352349353,
    349354349355349355356355349356357358,
    356349359359359359359349360361361361,
    361361349362363364362349362363364365,
    366362349363349367349368349369349370,
    349371349372349373349373374373349374,
    375376374349377377349378379379379379,
    379349380363364380349380363364366380,
    349381349382349383349384349385349386,
    349387349388349389349389390389349390,
    391392390349393394349395349396349397,
    363364397349398349395349399400349401,
    349396349402349401349403403349378404,
    404404404404349405405405405405349360,
    406406406406406349408407410409412413,
    411415416417418417417417414,   41,   45,   43,
     21,   41,   40169173165169238233228174232,
    224344344420348421348420423424422426,
    425428429427431430433434435432434436,
      0
  };
}

private static final short _hpricot_scan_indicies[] = init__hpricot_scan_indicies_0();


private static short[] init__hpricot_scan_trans_targs_0()
{
  return new short [] {
    204,    1,    2,   53204,    3,    4,    5,    6,    7,    8,    9,
     10,   11,   10204,   26,   11204,   12,   48,   26,   13,   14,
     15,   16,   17,   18,   19,   30,   20,   21,   20,   21,   22,   23,
     28,   24,   25204,   24,   25,   25,   27,   29,   29,   31,   32,
     31,   32,   33,   34,   35,   36,   47,   32206,   40,   35,   36,
     47,   37,   34206,   40,   46,   38,   39,   43,   38,   39,   43,
     39,   41,   42,   41207,   43208,   44,   45,   39,   32,   49,
     50,   51,   52,   21,   54,   55,   56,   57,   58204,   60,   61,
     60204,   61204,   63,   62,   66204,   63,   64,   66204,
     65,   64,   66,   67204,   65,   64,   66,   67204204,   68,
    144,   74142143,   73,   68,   69,   70,   73204,   69,   71,
     73204,   65,   72,   71,   73,   74204,   65,   72,   74,   75,
     76,   77141,   73,   75,   76,   71,   73,   78,   79,   90,   70,
     93,   80209,   94,   78,   79,   90,   70,   93,   80209,   94,
     79,   69,   82,   84209,   81,   79,   83,   82,   84,   85209,
     83,   85209,   86,   95139140,   93,   87,   88,   91,   87,
     88,   89,   96,   93209209,   91,   93,   83,   92,   91,   93,
     95209,   83,   92,   95,   90,   97,   98117108,   90128,
     99211129,   97,   98117108128,   99211129,   98,
    100120121211122101100103105210102104,
    103105106210104106210107138113136137,
    111112107100108111210112109111210104,
    110109111113210104110113114115116135,
    111114115109111108118128211119134118,
    128133211119123119120121123211211,   98,
    124133131132128125126118125126127130,
    128211117,   98100,   79120121211122100119,
    134133100108101210100,   69103105210102,
     79,   82,   84209,   81210146147212146148149,
    213204151152153154155156157158200159,
    160159161204162163176164165166167168,
    169170171172198173174173175177178179,
    180181182183184185186187193188191189,
    190190192194196195197199199201201214,
    214216216204204205204,    0,   59,   62145204,
    204150214214215214202216216217216203,
    218218218219218
  };
}

private static final short _hpricot_scan_trans_targs[] = init__hpricot_scan_trans_targs_0();


private static short[] init__hpricot_scan_trans_actions_0()
{
  return new short [] {
     73,    0,    0,    0,   59,    0,    0,    0,    0,    0,    0,    0,
      1,    5,    0,   92,    5,    0,   51,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    3,   83,    0,   19,    0,    0,
      0,    3,   86,   75,    0,   21,    0,    0,    3,    0,    3,   83,
      0,   19,    0,   19,    3,    3,    3172188,    3,    0,    0,
      0,    0113146,    0,   21,    3,   86,   86,    0,   21,   21,
      0,   21,    0,    0146,    0146,    0,    0,    3113,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,   61,    1,    5,
      0,   98,    0,   55,    5,    0,    5,   95,    0116,    0,   53,
     11,    0110,   11168,    0180,   23,    0122,   57,    3,
      3,    3,    0,    0,   89,    0,    9,    9104164,    0180,
    119176107107,    0160,   11201,    9,    9,    0,   80,
     80,    0,    0152,    3,    3196156,    3,   80,   80,   77,
    152,    3226,    3,    0,    9,    9,    7104,    0211,    0,
      0,    7180,   23192,    0,    7,   11,    0110,   11216,
      0,    0149,    3,    3,    7,    0,   89,    3,    3196,   80,
     80,    7,    0156221232180119107107,    0160,
     11238,    9,    9,    0,    7,    3,   80,   80101,   77152,
      3226,    3,    0,    9,    9,    7104,    0211,    0,    0,
      7180,   23192,    0,    0,    0180,   23192,    0,   11,
      0110,   11216,    0,    0149,    3,    3,    3,    0,    7,
     89,    3,    0,    9,    9104211,    0180119221107,
    107,    0160,   11238,    9,    9,    0,   80,   80,    0,    7,
    152,    3,    3196156,   77180119221107107,    0,
    160,   11238,    0,    0,   11,    0110,   11216149,    7,
      3,    3,    7,    7,   89,    3,    3196,   80,   80,    7,    7,
    156232,    7,    3,   77,   77196,   89206,    3101,    9,
      9,    0,   80,   80,    3232,    3,   77196,   89206,    3,
      3196,   89206,    3226,   25,   25,    0,    0,    0,    0,
     31,   71,    0,    0,    0,    0,    0,    0,    0,    0,    0,    3,
     13,    0,    0,   49,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    3,   15,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    3,    3,    0,
     17,    0,    0,    3,    3,    0,    0,    3,    0,    3,    0,   37,
    137,   43140,   63134184,   69,    0,    0,    1,    0,   65,
     67,    0,   33125,   31,   35,    0,   39128,   31,   41,    0,
     45131143,    0,   47
  };
}

private static final short _hpricot_scan_trans_actions[] = init__hpricot_scan_trans_actions_0();


private static short[] init__hpricot_scan_to_state_actions_0()
{
  return new short [] {
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     27,    0,    0,    0,    0,    0,    0,    0,    0,    0,   27,    0,
     27,    0,   27,    0
  };
}

private static final short _hpricot_scan_to_state_actions[] = init__hpricot_scan_to_state_actions_0();


private static short[] init__hpricot_scan_from_state_actions_0()
{
  return new short [] {
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     29,    0,    0,    0,    0,    0,    0,    0,    0,    0,   29,    0,
     29,    0,   29,    0
  };
}

private static final short _hpricot_scan_from_state_actions[] = init__hpricot_scan_from_state_actions_0();


private static short[] init__hpricot_scan_eof_trans_0()
{
  return new short [] {
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     40,   40,   40,   40,    1,   40,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,   40,   40,   40,   40,   40,   40,   40,   40,
     40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
     40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
     40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
     40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
     40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
     40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
     40,    1,    1,    1,    1,    1350350350350350350,
    350350350350350350350350350350350350,
    350350350350350350350350350350350350,
    350350350350350350350350350350350350,
    350350350350350350350350350350408410,
      0415420420420,   40,   40,   40421421,    0426,
      0431,    0437
  };
}

private static final short _hpricot_scan_eof_trans[] = init__hpricot_scan_eof_trans_0();


static final int hpricot_scan_start = 204;
static final int hpricot_scan_error = -1;

static final int hpricot_scan_en_html_comment = 214;
static final int hpricot_scan_en_html_cdata = 216;
static final int hpricot_scan_en_html_procins = 218;
static final int hpricot_scan_en_main = 204;

// line 192 "ext/hpricot_scan/hpricot_scan.java.rl"

public final static int BUFSIZE=16384;

private void rb_yield_tokens(IRubyObject sym, IRubyObject tag, IRubyObject attr, IRubyObject raw, boolean taint) {
  IRubyObject ary;
  if (sym == runtime.newSymbol("text")) {
    raw = tag;
  }
  ary = runtime.newArray(new IRubyObject[]{sym, tag, attr, raw});
  if (taint) {
    ary.setTaint(true);
    tag.setTaint(true);
    attr.setTaint(true);
    raw.setTaint(true);
  }
  block.yield(runtime.getCurrentContext(), ary, null, null, false);
}


int cs, act, have = 0, nread = 0, curline = 1, p=-1;
boolean text = false;
int ts=-1, te;
int eof=-1;
char[] buf;
Ruby runtime;
IRubyObject attr, bufsize;
IRubyObject[] tag, akey, aval;
int mark_tag, mark_akey, mark_aval;
boolean done = false, ele_open = false;
int buffer_size = 0;       
boolean taint = false;
Block block = null;


IRubyObject xmldecl, doctype, procins, stag, etag, emptytag, comment,
      cdata, sym_text;

IRubyObject hpricot_scan(IRubyObject recv, IRubyObject port) {
  attr = bufsize = runtime.getNil();
  tag = new IRubyObject[]{runtime.getNil()};
  akey = new IRubyObject[]{runtime.getNil()};
  aval = new IRubyObject[]{runtime.getNil()};

  RubyClass rb_eHpricotParseError = runtime.getModule("Hpricot").getClass("ParseError");

  taint = port.isTaint();
  if ( !port.respondsTo("read")) {
    if ( port.respondsTo("to_str")) {
      port = port.callMethod(runtime.getCurrentContext(),"to_str");
    } else {
      throw runtime.newArgumentError("bad Hpricot argument, String or IO only please.");
    }
  }

  buffer_size = BUFSIZE;
  if (rubyApi.getInstanceVariable(recv, "@buffer_size") != null) {
    bufsize = rubyApi.getInstanceVariable(recv, "@buffer_size");
    if (!bufsize.isNil()) {
      buffer_size = RubyNumeric.fix2int(bufsize);
    }
  }
  buf = new char[buffer_size];

 
// line 821 "ext/hpricot_scan/HpricotScanService.java"
  {
  cs = hpricot_scan_start;
  ts = -1;
  te = -1;
  act = 0;
  }
// line 256 "ext/hpricot_scan/hpricot_scan.java.rl"

  while( !done ) {
    IRubyObject str;
    p = have;
    int pe;
    int len, space = buffer_size - have;

    if ( space == 0 ) {
      /* We've used up the entire buffer storing an already-parsed token
       * prefix that must be preserved.  Likely caused by super-long attributes.
       * See ticket #13. */
       buffer_size += BUFSIZE;
       char[] new_buf = new char[buffer_size];
       System.arraycopy(buf, 0, new_buf, 0, buf.length);
       buf = new_buf;
       space = buffer_size - have;
    }

    if (port.respondsTo("read")) {
      str = port.callMethod(runtime.getCurrentContext(),"read",runtime.newFixnum(space));
    } else {
      str = ((RubyString)port).substr(nread,space);
    }

    str = str.convertToString();
    String sss = str.toString();
    char[] chars = sss.toCharArray();
    System.arraycopy(chars,0,buf,p,chars.length);

    len = sss.length();
    nread += len;

    if ( len < space ) {
      len++;
      done = true;
    }

    pe = p + len;
    char[] data = buf;

   
// line 870 "ext/hpricot_scan/HpricotScanService.java"
  {
  int _klen;
  int _trans = 0;
  int _acts;
  int _nacts;
  int _keys;
  int _goto_targ = 0;

  _goto: while (true) {
  switch ( _goto_targ ) {
  case 0:
  if ( p == pe ) {
    _goto_targ = 4;
    continue _goto;
  }
case 1:
  _acts = _hpricot_scan_from_state_actions[cs];
  _nacts = (int) _hpricot_scan_actions[_acts++];
  while ( _nacts-- > 0 ) {
    switch ( _hpricot_scan_actions[_acts++] ) {
  case 21:
// line 1 "ext/hpricot_scan/hpricot_scan.java.rl"
  {ts = p;}
  break;
// line 895 "ext/hpricot_scan/HpricotScanService.java"
    }
  }

  _match: do {
  _keys = _hpricot_scan_key_offsets[cs];
  _trans = _hpricot_scan_index_offsets[cs];
  _klen = _hpricot_scan_single_lengths[cs];
  if ( _klen > 0 ) {
    int _lower = _keys;
    int _mid;
    int _upper = _keys + _klen - 1;
    while (true) {
      if ( _upper < _lower )
        break;

      _mid = _lower + ((_upper-_lower) >> 1);
      if ( data[p] < _hpricot_scan_trans_keys[_mid] )
        _upper = _mid - 1;
      else if ( data[p] > _hpricot_scan_trans_keys[_mid] )
        _lower = _mid + 1;
      else {
        _trans += (_mid - _keys);
        break _match;
      }
    }
    _keys += _klen;
    _trans += _klen;
  }

  _klen = _hpricot_scan_range_lengths[cs];
  if ( _klen > 0 ) {
    int _lower = _keys;
    int _mid;
    int _upper = _keys + (_klen<<1) - 2;
    while (true) {
      if ( _upper < _lower )
        break;

      _mid = _lower + (((_upper-_lower) >> 1) & ~1);
      if ( data[p] < _hpricot_scan_trans_keys[_mid] )
        _upper = _mid - 2;
      else if ( data[p] > _hpricot_scan_trans_keys[_mid+1] )
        _lower = _mid + 2;
      else {
        _trans += ((_mid - _keys)>>1);
        break _match;
      }
    }
    _trans += _klen;
  }
  } while (false);

  _trans = _hpricot_scan_indicies[_trans];
case 3:
  cs = _hpricot_scan_trans_targs[_trans];

  if ( _hpricot_scan_trans_actions[_trans] != 0 ) {
    _acts = _hpricot_scan_trans_actions[_trans];
    _nacts = (int) _hpricot_scan_actions[_acts++];
    while ( _nacts-- > 0 )
  {
      switch ( _hpricot_scan_actions[_acts++] )
      {
  case 0:
// line 147 "ext/hpricot_scan/hpricot_scan.java.rl"
  {
    if (text) {
      CAT(tag, p);
      ELE(sym_text);
      text = false;
    }
    attr = runtime.getNil();
    tag[0] = runtime.getNil();
    mark_tag = -1;
    ele_open = true;
  }
  break;
  case 1:
// line 159 "ext/hpricot_scan/hpricot_scan.java.rl"
  { mark_tag = p; }
  break;
  case 2:
// line 160 "ext/hpricot_scan/hpricot_scan.java.rl"
  { mark_aval = p; }
  break;
  case 3:
// line 161 "ext/hpricot_scan/hpricot_scan.java.rl"
  { mark_akey = p; }
  break;
  case 4:
// line 162 "ext/hpricot_scan/hpricot_scan.java.rl"
  { SET(tag, p); }
  break;
  case 5:
// line 164 "ext/hpricot_scan/hpricot_scan.java.rl"
  { SET(aval, p); }
  break;
  case 6:
// line 165 "ext/hpricot_scan/hpricot_scan.java.rl"
  {
    if (buf[p-1] == '"' || buf[p-1] == '\'') { SET(aval, p-1); }
    else { SET(aval, p); }
  }
  break;
  case 7:
// line 169 "ext/hpricot_scan/hpricot_scan.java.rl"
  { SET(akey, p); }
  break;
  case 8:
// line 170 "ext/hpricot_scan/hpricot_scan.java.rl"
  { SET(aval, p); ATTR(rb_str_new2("version"), aval); }
  break;
  case 9:
// line 171 "ext/hpricot_scan/hpricot_scan.java.rl"
  { SET(aval, p); ATTR(rb_str_new2("encoding"), aval); }
  break;
  case 10:
// line 172 "ext/hpricot_scan/hpricot_scan.java.rl"
  { SET(aval, p); ATTR(rb_str_new2("standalone"), aval); }
  break;
  case 11:
// line 173 "ext/hpricot_scan/hpricot_scan.java.rl"
  { SET(aval, p); ATTR(rb_str_new2("public_id"), aval); }
  break;
  case 12:
// line 174 "ext/hpricot_scan/hpricot_scan.java.rl"
  { SET(aval, p); ATTR(rb_str_new2("system_id"), aval); }
  break;
  case 13:
// line 176 "ext/hpricot_scan/hpricot_scan.java.rl"
  {
    akey[0] = runtime.getNil();
    aval[0] = runtime.getNil();
    mark_akey = -1;
    mark_aval = -1;
  }
  break;
  case 14:
// line 183 "ext/hpricot_scan/hpricot_scan.java.rl"
  {
    ATTR(akey, aval);
  }
  break;
  case 15:
// line 9 "ext/hpricot_scan/hpricot_scan.java.rl"
  {curline += 1;}
  break;
  case 16:
// line 46 "ext/hpricot_scan/hpricot_scan.java.rl"
  { TEXT_PASS(); }
  break;
  case 17:
// line 50 "ext/hpricot_scan/hpricot_scan.java.rl"
  { EBLK(comment, 3); {cs = 204; _goto_targ = 2; if (true) continue _goto;} }
  break;
  case 18:
// line 55 "ext/hpricot_scan/hpricot_scan.java.rl"
  { EBLK(cdata, 3); {cs = 204; _goto_targ = 2; if (true) continue _goto;} }
  break;
  case 19:
// line 60 "ext/hpricot_scan/hpricot_scan.java.rl"
  { EBLK(procins, 2); {cs = 204; _goto_targ = 2; if (true) continue _goto;} }
  break;
  case 22:
// line 1 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;}
  break;
  case 23:
// line 50 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;}
  break;
  case 24:
// line 51 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;{ TEXT_PASS(); }}
  break;
  case 25:
// line 51 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p;p--;{ TEXT_PASS(); }}
  break;
  case 26:
// line 51 "ext/hpricot_scan/hpricot_scan.java.rl"
  {{p = ((te))-1;}{ TEXT_PASS(); }}
  break;
  case 27:
// line 55 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;}
  break;
  case 28:
// line 56 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;{ TEXT_PASS(); }}
  break;
  case 29:
// line 56 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p;p--;{ TEXT_PASS(); }}
  break;
  case 30:
// line 56 "ext/hpricot_scan/hpricot_scan.java.rl"
  {{p = ((te))-1;}{ TEXT_PASS(); }}
  break;
  case 31:
// line 60 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;}
  break;
  case 32:
// line 61 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;{ TEXT_PASS(); }}
  break;
  case 33:
// line 61 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p;p--;{ TEXT_PASS(); }}
  break;
  case 34:
// line 66 "ext/hpricot_scan/hpricot_scan.java.rl"
  {act = 8;}
  break;
  case 35:
// line 68 "ext/hpricot_scan/hpricot_scan.java.rl"
  {act = 10;}
  break;
  case 36:
// line 70 "ext/hpricot_scan/hpricot_scan.java.rl"
  {act = 12;}
  break;
  case 37:
// line 73 "ext/hpricot_scan/hpricot_scan.java.rl"
  {act = 15;}
  break;
  case 38:
// line 65 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;{ ELE(xmldecl); }}
  break;
  case 39:
// line 66 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;{ ELE(doctype); }}
  break;
  case 40:
// line 68 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;{ ELE(stag); }}
  break;
  case 41:
// line 69 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;{ ELE(etag); }}
  break;
  case 42:
// line 70 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;{ ELE(emptytag); }}
  break;
  case 43:
// line 71 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;{ {cs = 214; _goto_targ = 2; if (true) continue _goto;} }}
  break;
  case 44:
// line 72 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;{ {cs = 216; _goto_targ = 2; if (true) continue _goto;} }}
  break;
  case 45:
// line 73 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p+1;{ TEXT_PASS(); }}
  break;
  case 46:
// line 66 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p;p--;{ ELE(doctype); }}
  break;
  case 47:
// line 67 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p;p--;{ {cs = 218; _goto_targ = 2; if (true) continue _goto;} }}
  break;
  case 48:
// line 73 "ext/hpricot_scan/hpricot_scan.java.rl"
  {te = p;p--;{ TEXT_PASS(); }}
  break;
  case 49:
// line 67 "ext/hpricot_scan/hpricot_scan.java.rl"
  {{p = ((te))-1;}{ {cs = 218; _goto_targ = 2; if (true) continue _goto;} }}
  break;
  case 50:
// line 73 "ext/hpricot_scan/hpricot_scan.java.rl"
  {{p = ((te))-1;}{ TEXT_PASS(); }}
  break;
  case 51:
// line 1 "ext/hpricot_scan/hpricot_scan.java.rl"
  switch( act ) {
  case 8:
  {{p = ((te))-1;} ELE(doctype); }
  break;
  case 10:
  {{p = ((te))-1;} ELE(stag); }
  break;
  case 12:
  {{p = ((te))-1;} ELE(emptytag); }
  break;
  case 15:
  {{p = ((te))-1;} TEXT_PASS(); }
  break;
  }
  }
  break;
// line 1193 "ext/hpricot_scan/HpricotScanService.java"
      }
    }
  }

case 2:
  _acts = _hpricot_scan_to_state_actions[cs];
  _nacts = (int) _hpricot_scan_actions[_acts++];
  while ( _nacts-- > 0 ) {
    switch ( _hpricot_scan_actions[_acts++] ) {
  case 20:
// line 1 "ext/hpricot_scan/hpricot_scan.java.rl"
  {ts = -1;}
  break;
// line 1207 "ext/hpricot_scan/HpricotScanService.java"
    }
  }

  if ( ++p != pe ) {
    _goto_targ = 1;
    continue _goto;
  }
case 4:
  if ( p == eof )
  {
  if ( _hpricot_scan_eof_trans[cs] > 0 ) {
    _trans = _hpricot_scan_eof_trans[cs] - 1;
    _goto_targ = 3;
    continue _goto;
  }
  }

case 5:
  }
  break; }
  }
// line 297 "ext/hpricot_scan/hpricot_scan.java.rl"
   
    if ( cs == hpricot_scan_error ) {
      if(!tag[0].isNil()) {
        rb_raise(rb_eHpricotParseError, "parse error on element <"+tag.toString()+">, starting on line "+curline+".\n" + NO_WAY_SERIOUSLY);
      } else {
        rb_raise(rb_eHpricotParseError, "parse error on line "+curline+".\n" + NO_WAY_SERIOUSLY);
      }
    }
   
    if ( done && ele_open ) {
      ele_open = false;
      if(ts > -1) {
        mark_tag = ts;
        ts = -1;
        text = true;
      }
    }

    if(ts == -1) {
      have = 0;
      /* text nodes have no ts because each byte is parsed alone */
      if(mark_tag != -1 && text) {
        if (done) {
          if(mark_tag < p-1) {
            CAT(tag, p-1);
            ELE(sym_text);
          }
        } else {
          CAT(tag, p);
        }
      }
      mark_tag = 0;
    } else {
      have = pe - ts;
      System.arraycopy(buf,ts,buf,0,have);
      SLIDE(tag);
      SLIDE(akey);
      SLIDE(aval);
      te = (te - ts);
      ts = 0;
    }
  }
  return runtime.getNil();
}

public static IRubyObject __hpricot_scan(IRubyObject recv, IRubyObject port, Block block) {
  Ruby runtime = recv.getRuntime();
  HpricotScanService service = new HpricotScanService();
  service.runtime = runtime;
  service.xmldecl = runtime.newSymbol("xmldecl");
  service.doctype = runtime.newSymbol("doctype");
  service.procins = runtime.newSymbol("procins");
  service.stag = runtime.newSymbol("stag");
  service.etag = runtime.newSymbol("etag");
  service.emptytag = runtime.newSymbol("emptytag");
  service.comment = runtime.newSymbol("comment");
  service.cdata = runtime.newSymbol("cdata");
  service.sym_text = runtime.newSymbol("text");
  service.block = block;
  return service.hpricot_scan(recv, port);
}


public boolean basicLoad(final Ruby runtime) throws IOException {
       Init_hpricot_scan(runtime);
       return true;
}

public static void Init_hpricot_scan(Ruby runtime) {
  RubyModule mHpricot = runtime.defineModule("Hpricot");
  mHpricot.getMetaClass().attr_accessor(runtime.getCurrentContext(),new IRubyObject[]{runtime.newSymbol("buffer_size")});
  CallbackFactory fact = runtime.callbackFactory(HpricotScanService.class);
  mHpricot.getMetaClass().defineMethod("scan",fact.getSingletonMethod("__hpricot_scan",IRubyObject.class));
  mHpricot.defineClassUnder("ParseError",runtime.getClass("StandardError"),runtime.getClass("StandardError").getAllocator());
  rubyApi = JavaEmbedUtils.newObjectAdapter();
}
}
TOP

Related Classes of HpricotScanService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.