package org.ebookdroid.droids.fb2.codec.tags; import org.emdev.common.xml.tags.BaseXmlTagFactory; import org.emdev.common.xml.tags.XmlTag; public class FB2TagFactory extends BaseXmlTagFactory { public static final FB2TagFactory instance = new FB2TagFactory(); private FB2TagFactory() { } @Override public XmlTag getTagByName(final char[] ch, final int start, final int length) { switch (length) { case 1: switch (ch[start]) { case 'p': return FB2Tag.P.tag; case 'v': return FB2Tag.V.tag; case 'a': return FB2Tag.A.tag; } return XmlTag.UNKNOWN; case 2: switch (ch[start]) { case 't': switch (ch[start + 1]) { case 'r': return FB2Tag.TR.tag; case 'd': return FB2Tag.TD.tag; case 'h': return FB2Tag.TH.tag; } return XmlTag.UNKNOWN; case 'b': switch (ch[start + 1]) { case 'r': return FB2Tag.BR.tag; } return XmlTag.UNKNOWN; case 'u': switch (ch[start + 1]) { case 'l': return FB2Tag.UL.tag; } return XmlTag.UNKNOWN; case 'l': switch (ch[start + 1]) { case 'i': return FB2Tag.LI.tag; } return XmlTag.UNKNOWN; } return XmlTag.UNKNOWN; case 3: if (ch[start] == 's' && ch[start + 1] == 'u') { if (ch[start + 2] == 'p') { return FB2Tag.SUP.tag; } else if (ch[start + 2] == 'b') { return FB2Tag.SUB.tag; } } return XmlTag.UNKNOWN; default: final XmlTag t = tagsTree.get(ch, start, length); return t != null ? t : XmlTag.UNKNOWN; case 0: return XmlTag.UNKNOWN; } } }