[multiple changes]
2005-04-19 Andrew John Hughes <gnu_andrew@member.fsf.org> * gnu/xml/dom/html2/DomHTMLParser.java: Changed 'enum' references to become 'enumeration'. 2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch> * gnu/xml/dom/html2/DomHTMLParser.java: New file. 2005-04-19 Andrew John Hughes <gnu_andrew@member.fsf.org> * gnu/javax/swing/text/html/parser/htmlAttributeSet.java: (getAttributeNames()): Replaced 'enum' with 'enumeration'. * gnu/javax/swing/text/html/parser/htmlValidator.java: (validateParameters(TagElement,htmlAttributeSet)): Replaced 'enum' with 'enumeration'. (validateAttribute(TagElement,htmlAttributeSet,Enumeration,Enumeration)): Likewise. 2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch> * javax/swing/text/html/parser/Entity.java (getType): New method. * javax/swing/text/html/parser/DocumentParser.java: Inherit from javax.swing.text.html.parser.Parser. 2005-04-19 Chris Burdess <dog@gnu.org> * gnu/xml/dom/html2/DomHTMLDocument.java: Fixed element creation and check for HTML/XHTML namespace. 2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch> * javax/swing/text/html/parser/Parser.java, javax/swing/text/html/parser/Entity.java: Inheriting from DTDConstants. * javax/swing/text/html/parser/AttributeList.java (getValues): Changed return type. * javax/swing/text/html/parser/DocumentParser (parse): Adding the callback parameter that receives the parsing events. 2005-04-19 Chris Burdess <dog@gnu.org> * gnu/xml/dom/DomImpl.java, gnu/xml/dom/html2/DomHTMLAnchorElement.java, gnu/xml/dom/html2/DomHTMLDocument.java, gnu/xml/dom/html2/DomHTMLElement.java, gnu/xml/dom/html2/DomHTMLFormElement.java, gnu/xml/dom/html2/DomHTMLFrameElement.java, gnu/xml/dom/html2/DomHTMLIFrameElement.java, gnu/xml/dom/html2/DomHTMLImpl.java, gnu/xml/dom/html2/DomHTMLInputElement.java, gnu/xml/dom/html2/DomHTMLObjectElement.java, gnu/xml/dom/html2/DomHTMLOptionElement.java, gnu/xml/dom/html2/DomHTMLSelectElement.java, gnu/xml/dom/html2/DomHTMLTableCellElement.java, gnu/xml/dom/html2/DomHTMLTableElement.java, gnu/xml/dom/html2/DomHTMLTableRowElement.java, gnu/xml/dom/html2/DomHTMLTableSectionElement.java, gnu/xml/dom/html2/DomHTMLTextAreaElement.java: JAXP integration, UI events, and tree utility functions. 2005-04-19 Michael Koch <konqueror@gmx.de> * gnu/javax/swing/text/html/parser/HTML_401F.java, gnu/javax/swing/text/html/parser/gnuDTD.java, gnu/javax/swing/text/html/parser/models/node.java: Reworked import statements. 2005-04-19 Audrius Meskauskas, Lithuania <AudriusA@Bioinformatics.org> * javax/swing/text/html/HTMLDocument.java: New file. 2005-04-19 Michael Koch <konqueror@gmx.de> * javax/swing/text/html/HTMLFrameHyperlinkEvent.java: Reformatted. * javax/swing/text/html/parser/AttributeList.java: Fixed order of modifiers. (AttributeList): Made final. * javax/swing/text/html/parser/ContentModel.java: Fixed html characters in javadocs. * javax/swing/text/html/parser/DTD.java (DTD): Don't implement java.io.Serializable directly. (getElement): Simplified. * javax/swing/text/html/parser/DTDConstants.java: Reformatted file. * javax/swing/text/html/parser/Element.java: Fixed order of modifiers. * javax/swing/text/html/parser/Parser.java: Reformatted. Don't use fully-qualified class names. * javax/swing/text/html/parser/ParserDelegator.java: Fixed order of modifiers. * javax/swing/text/rtf/RTFParser.java: Re-ordered import statements. * javax/swing/text/rtf/RTFScanner.java: Removed unused import statement. 2005-04-19 Chris Burdess <dog@gnu.org> * gnu/xml/dom/html2/DomHTMLButtonElement.java, gnu/xml/dom/html2/DomHTMLCollection.java, gnu/xml/dom/html2/DomHTMLDocument.java, gnu/xml/dom/html2/DomHTMLElement.java: Extensions for new element types. * gnu/xml/dom/html2/DomHTMLDListElement.java, gnu/xml/dom/html2/DomHTMLDirectoryElement.java, gnu/xml/dom/html2/DomHTMLDivElement.java, gnu/xml/dom/html2/DomHTMLFieldSetElement.java, gnu/xml/dom/html2/DomHTMLFontElement.java, gnu/xml/dom/html2/DomHTMLFormElement.java, gnu/xml/dom/html2/DomHTMLFrameElement.java, gnu/xml/dom/html2/DomHTMLFrameSetElement.java, gnu/xml/dom/html2/DomHTMLHRElement.java, gnu/xml/dom/html2/DomHTMLHeadElement.java, gnu/xml/dom/html2/DomHTMLHeadingElement.java, gnu/xml/dom/html2/DomHTMLHtmlElement.java, gnu/xml/dom/html2/DomHTMLIFrameElement.java, gnu/xml/dom/html2/DomHTMLImageElement.java, gnu/xml/dom/html2/DomHTMLInputElement.java, gnu/xml/dom/html2/DomHTMLIsIndexElement.java, gnu/xml/dom/html2/DomHTMLLIElement.java, gnu/xml/dom/html2/DomHTMLLabelElement.java, gnu/xml/dom/html2/DomHTMLLegendElement.java, gnu/xml/dom/html2/DomHTMLLinkElement.java, gnu/xml/dom/html2/DomHTMLMapElement.java, gnu/xml/dom/html2/DomHTMLMenuElement.java, gnu/xml/dom/html2/DomHTMLMetaElement.java, gnu/xml/dom/html2/DomHTMLModElement.java, gnu/xml/dom/html2/DomHTMLOListElement.java, gnu/xml/dom/html2/DomHTMLObjectElement.java, gnu/xml/dom/html2/DomHTMLOptGroupElement.java, gnu/xml/dom/html2/DomHTMLOptionElement.java, gnu/xml/dom/html2/DomHTMLParagraphElement.java, gnu/xml/dom/html2/DomHTMLParamElement.java, gnu/xml/dom/html2/DomHTMLPreElement.java, gnu/xml/dom/html2/DomHTMLQuoteElement.java, gnu/xml/dom/html2/DomHTMLScriptElement.java, gnu/xml/dom/html2/DomHTMLSelectElement.java, gnu/xml/dom/html2/DomHTMLStyleElement.java, gnu/xml/dom/html2/DomHTMLTableCaptionElement.java, gnu/xml/dom/html2/DomHTMLTableCellElement.java, gnu/xml/dom/html2/DomHTMLTableColElement.java, gnu/xml/dom/html2/DomHTMLTableElement.java, gnu/xml/dom/html2/DomHTMLTableRowElement.java, gnu/xml/dom/html2/DomHTMLTableSectionElement.java, gnu/xml/dom/html2/DomHTMLTextAreaElement.java, gnu/xml/dom/html2/DomHTMLTitleElement.java, gnu/xml/dom/html2/DomHTMLUListElement.java: New files. 2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch> * javax/swing/text/ChangedCharSetException.java, javax/swing/text/html/HTMLEditorKit.java, javax/swing/text/html/HTMLFrameHyperlinkEvent.java, javax/swing/text/html/parser/AttributeList.java, javax/swing/text/html/parser/ContentModel.java, javax/swing/text/html/parser/DocumentParser.java, javax/swing/text/html/parser/DTD.java, javax/swing/text/html/parser/DTDConstants.java, javax/swing/text/html/parser/Element.java, javax/swing/text/html/parser/Entity.java, javax/swing/text/html/parser/Parser.java, javax/swing/text/html/parser/TagElement.java, gnu/javax/swing/text/html/package.html, gnu/javax/swing/text/html/parser/gnuDTD.java, gnu/javax/swing/text/html/parser/HTML_401F.java, gnu/javax/swing/text/html/parser/htmlAttributeSet.java, gnu/javax/swing/text/html/parser/htmlValidator.java, gnu/javax/swing/text/html/parser/package.html, gnu/javax/swing/text/html/parser/models/list.java, gnu/javax/swing/text/html/parser/models/node.java, gnu/javax/swing/text/html/parser/models/noTagModel.java, gnu/javax/swing/text/html/parser/models/package.html, gnu/javax/swing/text/html/parser/models/PCDATAonly_model.java, gnu/javax/swing/text/html/parser/models/TableRowContentModel.java, gnu/javax/swing/text/html/parser/models/transformer.java, gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.java, gnu/javax/swing/text/html/parser/support/package.html, gnu/javax/swing/text/html/parser/support/parameterDefaulter.java, gnu/javax/swing/text/html/parser/support/Parser.java, gnu/javax/swing/text/html/parser/support/textPreProcessor.java, gnu/javax/swing/text/html/parser/support/low/Buffer.java, gnu/javax/swing/text/html/parser/support/low/Constants.java, gnu/javax/swing/text/html/parser/support/low/Location.java, gnu/javax/swing/text/html/parser/support/low/node.java, gnu/javax/swing/text/html/parser/support/low/package.html, gnu/javax/swing/text/html/parser/support/low/ParseException.java, gnu/javax/swing/text/html/parser/support/low/pattern.java, gnu/javax/swing/text/html/parser/support/low/Queue.java, gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.java: New files. * javax/swing/text/html/HTML.java, javax/swing/text/html/parser/ParserDelegator.java: New files (replacing). * javax/swing/text/html/package.html, javax/swing/text/html/parser/package.html: Documenting the packages. 2005-04-19 Chris Burdess <dog@gnu.org> * gnu/xml/dom/html2/DomHTMLAnchorElement.java, gnu/xml/dom/html2/DomHTMLAppletElement.java, gnu/xml/dom/html2/DomHTMLAreaElement.java, gnu/xml/dom/html2/DomHTMLBaseElement.java, gnu/xml/dom/html2/DomHTMLBaseFontElement.java, gnu/xml/dom/html2/DomHTMLBodyElement.java, gnu/xml/dom/html2/DomHTMLBRElement.java, gnu/xml/dom/html2/DomHTMLButtonElement.java, gnu/xml/dom/html2/DomHTMLCollection.java, gnu/xml/dom/html2/DomHTMLDocument.java, gnu/xml/dom/html2/DomHTMLElement.java: New files. 2005-04-19 Michael Koch <konqueror@gmx.de> * Makefile.am: Added new files. * Makefile.in: Regenerated. From-SVN: r98406
This commit is contained in:
parent
c5f083efc5
commit
18e479e213
104 changed files with 22587 additions and 27 deletions
218
libjava/javax/swing/text/html/parser/ContentModel.java
Executable file
218
libjava/javax/swing/text/html/parser/ContentModel.java
Executable file
|
@ -0,0 +1,218 @@
|
|||
/* ContentModel.java --
|
||||
Copyright (C) 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GNU Classpath.
|
||||
|
||||
GNU Classpath is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU Classpath is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Classpath; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA.
|
||||
|
||||
Linking this library statically or dynamically with other modules is
|
||||
making a combined work based on this library. Thus, the terms and
|
||||
conditions of the GNU General Public License cover the whole
|
||||
combination.
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent
|
||||
modules, and to copy and distribute the resulting executable under
|
||||
terms of your choice, provided that you also meet, for each linked
|
||||
independent module, the terms and conditions of the license of that
|
||||
module. An independent module is a module which is not derived from
|
||||
or based on this library. If you modify this library, you may extend
|
||||
this exception to your version of the library, but you are not
|
||||
obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version. */
|
||||
|
||||
|
||||
package javax.swing.text.html.parser;
|
||||
|
||||
import gnu.javax.swing.text.html.parser.models.transformer;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import java.util.Vector;
|
||||
|
||||
/**
|
||||
* A representation of the element content. The instances of this class
|
||||
* can be arranged into the linked list, representing a BNF expression.
|
||||
* The content model is constructed as a branched tree structure in the
|
||||
* following way:
|
||||
* <pre>
|
||||
* a = new ContentModel('+', A, null); // a reprensents A+
|
||||
* b = new ContentModel('&', B, a); // b represents B & A+
|
||||
* c = new ContentModel('*', b, null); // c represents ( B & A+) *
|
||||
* d = new ContentModel('|', new ContentModel('*', A, null),
|
||||
* new ContentModel('?', B, null)); // d represents ( A* | B? )
|
||||
* </pre>
|
||||
* where the valid operations are:
|
||||
* <ul>
|
||||
* <li><code>E* </code> E occurs zero or more times</li>
|
||||
* <li><code>E+ </code> E occurs one or more times</li>
|
||||
* <li><code>E? </code> E occurs once or not atl all</li>
|
||||
* <li><code>A,B</code> A occurs before B</li>
|
||||
* <li><code>A|B</code> both A and B are permitted in any order.
|
||||
* The '|' alone does not permit the repetetive occurence of A or B
|
||||
* (use <code>(A|B)*</code>.</li>
|
||||
* <li><code>A&B</code> both A and B must occur once (in any order)</li>
|
||||
* </ul>
|
||||
* @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
|
||||
*/
|
||||
public final class ContentModel
|
||||
implements Serializable
|
||||
{
|
||||
/** Use serialVersionUID for interoperability. */
|
||||
private static final long serialVersionUID = -1130825523866321257L;
|
||||
|
||||
/**
|
||||
* The next content model model ( = pointer to the next element of
|
||||
* the linked list) for the binary expression (',','&' or '|'). Null
|
||||
* for the last element in the list.
|
||||
*/
|
||||
public ContentModel next;
|
||||
|
||||
/**
|
||||
* The document content, containing either Element or the enclosed
|
||||
* content model (that would be in the parentheses in BNF expression).
|
||||
*/
|
||||
public Object content;
|
||||
|
||||
/**
|
||||
* Specifies the BNF operation between this node and the node,
|
||||
* stored in the field <code>next</code> (or for this node, if it is
|
||||
* an unary operation.
|
||||
*/
|
||||
public int type;
|
||||
|
||||
/** Create a content model initializing all fields to default values. */
|
||||
public ContentModel()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a content model, consisting of the single element.
|
||||
* Examples:
|
||||
*<code>
|
||||
* a = new ContentModel('+', A, null); // a reprensents A+
|
||||
* b = new ContentModel('&', B, a); // b represents B & A+
|
||||
* c = new ContentModel('*', b, null); // c represents ( B & A+) *
|
||||
* d = new ContentModel('|', A,
|
||||
* new ContentModel('?',b, null);
|
||||
* // d represents
|
||||
* </code>
|
||||
*/
|
||||
public ContentModel(Element a_content)
|
||||
{
|
||||
content = a_content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a content model, involving expression of the given type.
|
||||
* @param a_type The expression operation type ('*','?' or '+'
|
||||
* @param a_content The content for that the expression is applied.
|
||||
*/
|
||||
public ContentModel(int a_type, ContentModel a_content)
|
||||
{
|
||||
content = a_content;
|
||||
type = a_type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a content model, involving binary expression of the given type.
|
||||
* @param a_type The expression operation type ( ',', '|' or '&').
|
||||
* @param a_content The content of the left part of the expression.
|
||||
* @param a_next The content model, representing the right part of the
|
||||
* expression.
|
||||
*/
|
||||
public ContentModel(int a_type, Object a_content, ContentModel a_next)
|
||||
{
|
||||
content = a_content;
|
||||
type = a_type;
|
||||
next = a_next;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds all list elements to the given vector, ignoring the
|
||||
* operations between the elements. The old vector values are not
|
||||
* discarded.
|
||||
* @param elements - a vector to add the values to.
|
||||
*/
|
||||
public void getElements(Vector elements)
|
||||
{
|
||||
ContentModel c = this;
|
||||
|
||||
while (c != null)
|
||||
{
|
||||
elements.add(c.content);
|
||||
c = c.next;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the content model matches an empty input stream.
|
||||
* The empty content is created using SGML DTD keyword EMPTY.
|
||||
* The empty model is a model with the content field equal to null.
|
||||
*
|
||||
* @return true if the content field is equal to null.
|
||||
*/
|
||||
public boolean empty()
|
||||
{
|
||||
return content == null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the element, stored in the <code>next.content</code>.
|
||||
* The method is programmed as the part of the standard API, but not
|
||||
* used in this implementation.
|
||||
* @return the value of the field <code>next</code>.
|
||||
*/
|
||||
public Element first()
|
||||
{
|
||||
return (Element) next.content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if this object can potentially be the first token in the
|
||||
* ContenModel list. The method is programmed as the part of the
|
||||
* standard API, but not used in this implementation.
|
||||
*/
|
||||
public boolean first(Object token)
|
||||
{
|
||||
ContentModel c = this;
|
||||
while (c.next != null)
|
||||
{
|
||||
if (c.content != null && c.content.toString().equals(token.toString()) &&
|
||||
c.type != ','
|
||||
)
|
||||
|
||||
// Agree if the operation with the preceeding element
|
||||
// is not the comma operation.
|
||||
return true;
|
||||
c = c.next;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string representation (an expression) of this content model.
|
||||
* The expression has BNF-like syntax, except the absence of the
|
||||
* unary operator is additionally indicated by " ' ". It is
|
||||
* advisable to check the created models for correctness using this
|
||||
* method.
|
||||
*/
|
||||
public String toString()
|
||||
{
|
||||
return transformer.transform(this).toString();
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue