KickJava   Java API By Example, From Geeks To Geeks.

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


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 import java.util.*;
24
25 class StartTagTypeMarkupDeclaration extends StartTagTypeGenericImplementation {
26     static final StartTagTypeMarkupDeclaration INSTANCE=new StartTagTypeMarkupDeclaration();
27
28     static final String JavaDoc ELEMENT="!element";
29     static final String JavaDoc ATTLIST="!attlist";
30     static final String JavaDoc ENTITY="!entity";
31     static final String JavaDoc NOTATION="!notation";
32
33     private StartTagTypeMarkupDeclaration() {
34         super("markup declaration","<!",">",null,false,false,true);
35     }
36
37     protected Tag constructTagAt(final Source source, final int pos) {
38         final Tag tag=super.constructTagAt(source,pos);
39         if (tag==null) return null;
40         final String JavaDoc name=tag.getName();
41         if (name!=ELEMENT && name!=ATTLIST && name!=ENTITY && name!=NOTATION) return null; // can use == instead of .equals() because the names are in Tag.TAG_MAP
42
return tag;
43     }
44
45     protected int findEnd(final Source source, int pos) {
46         final ParseText parseText=source.getParseText();
47         boolean insideQuotes=false;
48         do {
49             final char c=parseText.charAt(pos);
50             if (c=='"') {
51                 insideQuotes=!insideQuotes;
52             } else if (c=='>' && !insideQuotes) {
53                 return pos+1;
54             }
55         } while ((++pos)<source.getEnd());
56         return -1;
57     }
58 }
59
Popular Tags