1 |
// Jericho HTML Parser - Java based library for analysing and manipulating HTML
|
2 |
// Version 3.2
|
3 |
// Copyright (C) 2004-2009 Martin Jericho
|
4 |
// http://jericho.htmlparser.net/
|
5 |
//
|
6 |
// This library is free software; you can redistribute it and/or
|
7 |
// modify it under the terms of either one of the following licences:
|
8 |
//
|
9 |
// 1. The Eclipse Public License (EPL) version 1.0,
|
10 |
// included in this distribution in the file licence-epl-1.0.html
|
11 |
// or available at http://www.eclipse.org/legal/epl-v10.html
|
12 |
//
|
13 |
// 2. The GNU Lesser General Public License (LGPL) version 2.1 or later,
|
14 |
// included in this distribution in the file licence-lgpl-2.1.txt
|
15 |
// or available at http://www.gnu.org/licenses/lgpl.txt
|
16 |
//
|
17 |
// This library is distributed on an "AS IS" basis,
|
18 |
// WITHOUT WARRANTY OF ANY KIND, either express or implied.
|
19 |
// See the individual licence texts for more details.
|
20 |
|
21 |
package net.htmlparser.jericho;
|
22 |
|
23 |
final class StartTagTypeDoctypeDeclaration extends StartTagTypeGenericImplementation {
|
24 |
static final StartTagTypeDoctypeDeclaration INSTANCE=new StartTagTypeDoctypeDeclaration();
|
25 |
|
26 |
private StartTagTypeDoctypeDeclaration() {
|
27 |
super("document type declaration","<!doctype",">",null,false,false,false);
|
28 |
}
|
29 |
|
30 |
protected int getEnd(final Source source, int pos) {
|
31 |
final ParseText parseText=source.getParseText();
|
32 |
boolean insideQuotes=false;
|
33 |
boolean insideSquareBrackets=false;
|
34 |
do {
|
35 |
final char c=parseText.charAt(pos);
|
36 |
if (insideQuotes) {
|
37 |
if (c=='"') insideQuotes=false;
|
38 |
} else {
|
39 |
switch (c) {
|
40 |
case '>':
|
41 |
if (!insideSquareBrackets) return pos+1;
|
42 |
break;
|
43 |
case '"':
|
44 |
insideQuotes=true;
|
45 |
break;
|
46 |
case '[':
|
47 |
insideSquareBrackets=true;
|
48 |
break;
|
49 |
case ']':
|
50 |
insideSquareBrackets=false;
|
51 |
break;
|
52 |
}
|
53 |
}
|
54 |
} while ((++pos)<source.getEnd());
|
55 |
return -1;
|
56 |
}
|
57 |
}
|