📄 htmlscanner.java
字号:
break;
case ST_LT_LINK:
switch ( ch )
{
case ' ': case '\t': case '\n': case '\r':
state = ST_LINK; break;
case '>': state = ST_GROUND; break;
default: state = ST_LTJUNK; break;
}
break;
case ST_LINK:
switch ( ch )
{
case '>': state = ST_GROUND; break;
case '"': state = ST_LINK_QUOTE; break;
case 'H': case 'h': state = ST_LINK_H; break;
default: break;
}
break;
case ST_LINK_QUOTE:
switch ( ch )
{
case '"': state = ST_LINK; break;
default: break;
}
break;
case ST_LINK_H:
switch ( ch )
{
case 'R': case 'r': state = ST_LINK_HR; break;
case '"': state = ST_LINK_QUOTE; break;
default: state = ST_LINK; break;
}
break;
case ST_LINK_HR:
switch ( ch )
{
case 'E': case 'e': state = ST_LINK_HRE; break;
case '"': state = ST_LINK_QUOTE; break;
default: state = ST_LINK; break;
}
break;
case ST_LINK_HRE:
switch ( ch )
{
case 'F': case 'f': state = ST_LINK_HREF; break;
case '"': state = ST_LINK_QUOTE; break;
default: state = ST_LINK; break;
}
break;
case ST_LINK_HREF:
switch ( ch )
{
case ' ': case '\t': case '\n': case '\r': break;
case '=': state = ST_LINK_HREF_EQUAL; break;
case '"': state = ST_LINK_QUOTE; break;
default: state = ST_LINK; break;
}
break;
case ST_LINK_HREF_EQUAL:
// Start accumulating a URL.
urlBuf.setLength( 0 );
gettingUrl = true;
switch ( ch )
{
case ' ': case '\t': case '\n': case '\r': break;
case '"': state = ST_LINKHREF_Q; break;
default:
// Accumulate the URL.
urlBuf.append( ch );
state = ST_LINKHREF_NQ;
break;
}
break;
case ST_LINKHREF_Q:
switch ( ch )
{
case '"':
// Got a complete URL.
callLINKHREF( urlBuf.toString() );
gettingUrl = false;
state = ST_LINK;
break;
default:
// Accumulate the URL.
urlBuf.append( ch );
break;
}
break;
case ST_LINKHREF_NQ:
switch ( ch )
{
case '>':
case ' ': case '\t': case '\n': case '\r':
// Got a complete URL.
callLINKHREF( urlBuf.toString() );
gettingUrl = false;
state = ( ch == '>' ? ST_GROUND : ST_LINK );
break;
default:
// Accumulate the URL.
urlBuf.append( ch );
break;
}
break;
case ST_LT_BO:
switch ( ch )
{
case 'D': case 'd': state = ST_LT_BOD; break;
case '>': state = ST_GROUND; break;
default: state = ST_LTJUNK; break;
}
break;
case ST_LT_BOD:
switch ( ch )
{
case 'Y': case 'y': state = ST_LT_BODY; break;
case '>': state = ST_GROUND; break;
default: state = ST_LTJUNK; break;
}
break;
case ST_LT_BODY:
switch ( ch )
{
case ' ': case '\t': case '\n': case '\r':
state = ST_BODY; break;
case '>': state = ST_GROUND; break;
default: state = ST_LTJUNK; break;
}
break;
case ST_BODY:
switch ( ch )
{
case '>': state = ST_GROUND; break;
case '"': state = ST_BODY_QUOTE; break;
case 'B': case 'b': state = ST_BODY_B; break;
default: break;
}
break;
case ST_BODY_QUOTE:
switch ( ch )
{
case '"': state = ST_BODY; break;
default: break;
}
break;
case ST_BODY_B:
switch ( ch )
{
case 'A': case 'a': state = ST_BODY_BA; break;
case '"': state = ST_BODY_QUOTE; break;
default: state = ST_BODY; break;
}
break;
case ST_BODY_BA:
switch ( ch )
{
case 'C': case 'c': state = ST_BODY_BAC; break;
case '"': state = ST_BODY_QUOTE; break;
default: state = ST_BODY; break;
}
break;
case ST_BODY_BAC:
switch ( ch )
{
case 'K': case 'k': state = ST_BODY_BACK; break;
case '"': state = ST_BODY_QUOTE; break;
default: state = ST_BODY; break;
}
break;
case ST_BODY_BACK:
switch ( ch )
{
case 'G': case 'g': state = ST_BODY_BACKG; break;
case '"': state = ST_BODY_QUOTE; break;
default: state = ST_BODY; break;
}
break;
case ST_BODY_BACKG:
switch ( ch )
{
case 'R': case 'r': state = ST_BODY_BACKGR; break;
case '"': state = ST_BODY_QUOTE; break;
default: state = ST_BODY; break;
}
break;
case ST_BODY_BACKGR:
switch ( ch )
{
case 'O': case 'o': state = ST_BODY_BACKGRO; break;
case '"': state = ST_BODY_QUOTE; break;
default: state = ST_BODY; break;
}
break;
case ST_BODY_BACKGRO:
switch ( ch )
{
case 'U': case 'u': state = ST_BODY_BACKGROU; break;
case '"': state = ST_BODY_QUOTE; break;
default: state = ST_BODY; break;
}
break;
case ST_BODY_BACKGROU:
switch ( ch )
{
case 'N': case 'n': state = ST_BODY_BACKGROUN; break;
case '"': state = ST_BODY_QUOTE; break;
default: state = ST_BODY; break;
}
break;
case ST_BODY_BACKGROUN:
switch ( ch )
{
case 'D': case 'd': state = ST_BODY_BACKGROUND; break;
case '"': state = ST_BODY_QUOTE; break;
default: state = ST_BODY; break;
}
break;
case ST_BODY_BACKGROUND:
switch ( ch )
{
case ' ': case '\t': case '\n': case '\r': break;
case '=': state = ST_BODY_BACKGROUND_EQUAL; break;
case '"': state = ST_BODY_QUOTE; break;
default: state = ST_BODY; break;
}
break;
case ST_BODY_BACKGROUND_EQUAL:
// Start accumulating a URL.
urlBuf.setLength( 0 );
gettingUrl = true;
switch ( ch )
{
case ' ': case '\t': case '\n': case '\r': break;
case '"': state = ST_BODYBACKGROUND_Q; break;
default:
// Accumulate the URL.
urlBuf.append( ch );
state = ST_BODYBACKGROUND_NQ;
break;
}
break;
case ST_BODYBACKGROUND_Q:
switch ( ch )
{
case '"':
// Got a complete URL.
callBODYBACKGROUND( urlBuf.toString() );
gettingUrl = false;
state = ST_BODY;
break;
default:
// Accumulate the URL.
urlBuf.append( ch );
break;
}
break;
case ST_BODYBACKGROUND_NQ:
switch ( ch )
{
case '>':
case ' ': case '\t': case '\n': case '\r':
// Got a complete URL.
callBODYBACKGROUND( urlBuf.toString() );
gettingUrl = false;
state = ( ch == '>' ? ST_GROUND : ST_BODY );
break;
default:
// Accumulate the URL.
urlBuf.append( ch );
break;
}
break;
case ST_LT_IN:
switch ( ch )
{
case 'P': case 'p': state = ST_LT_INP; break;
case '>': state = ST_GROUND; break;
default: state = ST_LTJUNK; break;
}
break;
case ST_LT_INP:
switch ( ch )
{
case 'U': case 'u': state = ST_LT_INPU; break;
case '>': state = ST_GROUND; break;
default: state = ST_LTJUNK; break;
}
break;
case ST_LT_INPU:
switch ( ch )
{
case 'T': case 't': state = ST_LT_INPUT; break;
case '>': state = ST_GROUND; break;
default: state = ST_LTJUNK; break;
}
break;
case ST_LT_INPUT:
switch ( ch )
{
case ' ': case '\t': case '\n': case '\r':
state = ST_INPUT; break;
case '>': state = ST_GROUND; break;
default: state = ST_LTJUNK; break;
}
break;
case ST_INPUT:
switch ( ch )
{
case '>': state = ST_GROUND; break;
case '"': state = ST_INPUT_QUOTE; break;
case 'S': case 's': state = ST_INPUT_S; break;
default: break;
}
break;
case ST_INPUT_QUOTE:
switch ( ch )
{
case '"': state = ST_INPUT; break;
default: break;
}
break;
case ST_INPUT_S:
switch ( ch )
{
case 'R': case 'r': state = ST_INPUT_SR; break;
case '"': state = ST_INPUT_QUOTE; break;
default: state = ST_INPUT; break;
}
break;
case ST_INPUT_SR:
switch ( ch )
{
case 'C': case 'c': state = ST_INPUT_SRC; break;
case '"': state = ST_INPUT_QUOTE; break;
default: state = ST_INPUT; break;
}
break;
case ST_INPUT_SRC:
switch ( ch )
{
case ' ': case '\t': case '\n': case '\r': break;
case '=': state = ST_INPUT_SRC_EQUAL; break;
case '"': state = ST_INPUT_QUOTE; break;
default: state = ST_INPUT; break;
}
break;
case ST_INPUT_SRC_EQUAL:
// Start accumulating a URL.
urlBuf.setLength( 0 );
gettingUrl = true;
switch ( ch )
{
case ' ': case '\t': case '\n': case '\r': break;
case '"': state = ST_INPUTSRC_Q; break;
default:
// Accumulate the URL.
urlBuf.append( ch );
state = ST_INPUTSRC_NQ;
break;
}
break;
case ST_INPUTSRC_Q:
switch ( ch )
{
case '"':
// Got a complete URL.
callIMGSRC( urlBuf.toString() );
gettingUrl = false;
state = ST_INPUT;
break;
default:
// Accumulate the URL.
urlBuf.append( ch );
break;
}
break;
case ST_INPUTSRC_NQ:
switch ( ch )
{
case '>':
case ' ': case '\t': case '\n': case '\r':
// Got a complete URL.
callIMGSRC( urlBuf.toString() );
gettingUrl = false;
state = ( ch == '>' ? ST_GROUND : ST_INPUT );
break;
default:
// Accumulate the URL.
urlBuf.append( ch );
break;
}
break;
}
}
return interpDelta;
}
private void callAHREF( String urlStr )
{
Enumeration en = observers.elements();
while ( en.hasMoreElements() )
{
Acme.Pair pair = (Acme.Pair) en.nextElement();
Acme.HtmlObserver observer = (HtmlObserver) pair.left();
Object clientData = pair.right();
observer.gotAHREF( urlStr, contextUrl, clientData );
}
}
private void callIMGSRC( String urlStr )
{
Enumeration en = observers.elements();
while ( en.hasMoreElements() )
{
Acme.Pair pair = (Acme.Pair) en.nextElement();
Acme.HtmlObserver observer = (HtmlObserver) pair.left();
Object clientData = pair.right();
observer.gotIMGSRC( urlStr, contextUrl, clientData );
}
}
private void callFRAMESRC( String urlStr )
{
Enumeration en = observers.elements();
while ( en.hasMoreElements() )
{
Acme.Pair pair = (Acme.Pair) en.nextElement();
Acme.HtmlObserver observer = (HtmlObserver) pair.left();
Object clientData = pair.right();
observer.gotFRAMESRC( urlStr, contextUrl, clientData );
}
}
private void callBASEHREF( String urlStr )
{
Enumeration en = observers.elements();
while ( en.hasMoreElements() )
{
Acme.Pair pair = (Acme.Pair) en.nextElement();
Acme.HtmlObserver observer = (HtmlObserver) pair.left();
Object clientData = pair.right();
observer.gotBASEHREF( urlStr, contextUrl, clientData );
}
}
private void callAREAHREF( String urlStr )
{
Enumeration en = observers.elements();
while ( en.hasMoreElements() )
{
Acme.Pair pair = (Acme.Pair) en.nextElement();
Acme.HtmlObserver observer = (HtmlObserver) pair.left();
Object clientData = pair.right();
observer.gotAREAHREF( urlStr, contextUrl, clientData );
}
}
private void callLINKHREF( String urlStr )
{
Enumeration en = observers.elements();
while ( en.hasMoreElements() )
{
Acme.Pair pair = (Acme.Pair) en.nextElement();
Acme.HtmlObserver observer = (HtmlObserver) pair.left();
Object clientData = pair.right();
observer.gotLINKHREF( urlStr, contextUrl, clientData );
}
}
private void callBODYBACKGROUND( String urlStr )
{
Enumeration en = observers.elements();
while ( en.hasMoreElements() )
{
Acme.Pair pair = (Acme.Pair) en.nextElement();
Acme.HtmlObserver observer = (HtmlObserver) pair.left();
Object clientData = pair.right();
observer.gotBODYBACKGROUND( urlStr, contextUrl, clientData );
}
}
/// Can be used to change the scan buffer in the middle of a scan.
// Black Magic! Dangerous! Be careful! For use only by
// HtmlEditScanner - any other use voids warranty.
protected void substitute( int oldLen, String newStr )
{
int newLen = newStr.length();
int d = newLen - oldLen;
System.arraycopy(
interpBuf, interpIndex, interpBuf, interpIndex + d,
interpEnd - interpIndex );
// newStr.getBytes( 0, newLen, interpBuf, interpIndex - oldLen );
byte[] newBytes = newStr.getBytes();
System.arraycopy(
newBytes, 0, interpBuf, interpIndex - oldLen, newLen );
interpIndex += d;
interpEnd += d;
interpDelta += d;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -