package org.weborganic.xmldoclet; import com.sun.javadoc.Tag; import com.sun.tools.doclets.Taglet; /** * A collection of taglets to support the standard javadoc tags. * * @author Christophe Lauret * @version 3 April 2010 */ public enum BlockTag implements Taglet { /** * Taglet for the <code>@author</code> tag. */ AUTHOR("author", false) { @Override public XMLNode toXMLNode(Tag tag) { return new XMLNode("author").text(tag.text()); } @Override public String toString(Tag tag) { return "<author>"+tag.text()+"</author>"; } @Override public String toString(Tag[] tags) { StringBuilder out = new StringBuilder(); for (Tag t : tags) { out.append(toString(t)); } return out.toString(); } }, SERIAL("serial", false){ @Override public XMLNode toXMLNode(Tag tag) { return new XMLNode("serial").text(tag.text()); } @Override public String toString(Tag tag) { return tag.text(); } @Override public String toString(Tag[] tags) { StringBuilder out = new StringBuilder(); for (Tag t : tags) { out.append(toString(t)); } return out.toString(); } }, SERIALDATA("serialData", false){ @Override public XMLNode toXMLNode(Tag tag) { return new XMLNode("serialData").text(tag.text()); } @Override public String toString(Tag tag) { return tag.text(); } @Override public String toString(Tag[] tags) { StringBuilder out = new StringBuilder(); for (Tag t : tags) { out.append(toString(t)); } return out.toString(); } }, SERIALFIELD("serialField", false){ @Override public XMLNode toXMLNode(Tag tag) { return new XMLNode("serialField").text(tag.text()); } @Override public String toString(Tag tag) { return tag.text(); } @Override public String toString(Tag[] tags) { StringBuilder out = new StringBuilder(); for (Tag t : tags) { out.append(toString(t)); } return out.toString(); } }, SINCE("since", false){ @Override public XMLNode toXMLNode(Tag tag) { return new XMLNode("since").text(tag.text()); } @Override public String toString(Tag tag) { return tag.text(); } @Override public String toString(Tag[] tags) { StringBuilder out = new StringBuilder(); for (Tag t : tags) { out.append(toString(t)); } return out.toString(); } }, VERSION("version", false){ @Override public XMLNode toXMLNode(Tag tag) { return new XMLNode("version").text(tag.text()); } @Override public String toString(Tag tag) { return "<version>"+tag.text()+"</version>"; } @Override public String toString(Tag[] tags) { StringBuilder out = new StringBuilder(); for (Tag t : tags) { out.append(toString(t)); } return out.toString(); } }; // enum class methods =============================================================================================== /** * The name of the tag */ private final String _name; /** * Creates a new tag. * * @param name The name of the tag. * @param inline <code>true</code> for an inline tag; <code>false</code> otherwise. */ BlockTag(String name, boolean inline) { this._name = name; } /** * Returns the XML node corresponding to this taglet. */ public abstract XMLNode toXMLNode(Tag tag); @Override public String getName() { return this._name; } @Override public boolean isInlineTag() { return false; } @Override public boolean inConstructor() { return true; } @Override public boolean inField(){ return true; } @Override public boolean inMethod() { return true; } @Override public boolean inOverview() { return true; } @Override public boolean inPackage() { return true; } @Override public boolean inType() { return true; } }