// HTMLParser Library $Name: v1_6_20060319 $ - A java-based parser for HTML // http://sourceforge.org/projects/htmlparser // Copyright (C) 2004 Somik Raha // // Revision Control Information // // $Source: /cvsroot/htmlparser/htmlparser/src/org/htmlparser/tags/ScriptTag.java,v $ // $Author: derrickoswald $ // $Date: 2005/04/10 23:20:45 $ // $Revision: 1.38 $ // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library 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 // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // package org.htmlparser.tags; import org.htmlparser.Node; import org.htmlparser.scanners.ScriptScanner; import org.htmlparser.util.SimpleNodeIterator; /** * A script tag. */ public class ScriptTag extends CompositeTag { /** * The set of names handled by this tag. */ private static final String[] mIds = new String[] {"SCRIPT"}; /** * The set of end tag names that indicate the end of this tag. */ private static final String[] mEndTagEnders = new String[] {"BODY", "HTML"}; /** * Script code if different from the page contents. */ protected String mCode; /** * Create a new script tag. */ public ScriptTag () { setThisScanner (new ScriptScanner ()); } /** * Return the set of names handled by this tag. * @return The names to be matched that create tags of this type. */ public String[] getIds () { return (mIds); } /** * Return the set of end tag names that cause this tag to finish. * @return The names of following end tags that stop further scanning. */ public String[] getEndTagEnders () { return (mEndTagEnders); } /** * Get the <code>LANGUAGE</code> attribute, if any. * @return The scripting language. */ public String getLanguage() { return (getAttribute ("LANGUAGE")); } /** * Get the script code. * Normally this is the contents of the children, but in the rare case that * the script is encoded, this is the plaintext decrypted code. * @return The plaintext or overridden code contents of the tag. */ public String getScriptCode () { String ret; if (null != mCode) ret = mCode; else ret = getChildrenHTML (); return (ret); } /** * Set the code contents. * @param code The new code contents of this tag. */ public void setScriptCode (String code) { mCode = code; } /** * Get the <code>TYPE</code> attribute, if any. * @return The script mime type. */ public String getType() { return (getAttribute ("TYPE")); } /** * Set the language of the script tag. * @param language The new language value. */ public void setLanguage (String language) { setAttribute ("LANGUAGE", language); } /** * Set the mime type of the script tag. * @param type The new mime type. */ public void setType (String type) { setAttribute ("TYPE", type); } /** * Places the script contents into the provided buffer. * @param sb The buffer to add the script to. */ protected void putChildrenInto (StringBuffer sb) { Node node; if (null != getScriptCode ()) sb.append (getScriptCode ()); else for (SimpleNodeIterator e = children (); e.hasMoreNodes ();) { node = e.nextNode (); // eliminate virtual tags // if (!(node.getStartPosition () == node.getEndPosition ())) sb.append (node.toHtml ()); } } /** * Print the contents of the script tag suitable for debugging display. * @return The script language or type and code as a string. */ public String toString() { StringBuffer sb = new StringBuffer(); sb.append("Script Node : \n"); if (getLanguage () != null || getType () != null) { sb.append("Properties -->\n"); if (getLanguage () != null && getLanguage ().length () !=0) sb.append("[Language : "+ getLanguage ()+"]\n"); if (getType () != null && getType ().length () != 0) sb.append("[Type : "+ getType ()+"]\n"); } sb.append("\n"); sb.append("Code\n"); sb.append("****\n"); sb.append(getScriptCode()+"\n"); return sb.toString(); } }