KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > au > id > jericho > lib > html > StartTagTypeDoctypeDeclaration


1 // Jericho HTML Parser - Java based library for analysing and manipulating HTML
2
// Version 2.2
3
// Copyright (C) 2006 Martin Jericho
4
// http://sourceforge.net/projects/jerichohtml/
5
//
6
// This library is free software; you can redistribute it and/or
7
// modify it under the terms of the GNU Lesser General Public
8
// License as published by the Free Software Foundation; either
9
// version 2.1 of the License, or (at your option) any later version.
10
// http://www.gnu.org/copyleft/lesser.html
11
//
12
// This library is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
// Lesser General Public License for more details.
16
//
17
// You should have received a copy of the GNU Lesser General Public
18
// License along with this library; if not, write to the Free Software
19
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20

21 package au.id.jericho.lib.html;
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 findEnd(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 }
58
Popular Tags