Package info.bliki.htmlcleaner

Examples of info.bliki.htmlcleaner.TagToken


     *
     * @return The <code>TagToken</code> at the top of this stack.
     */
    public TagToken pop() {
        if (size() > 0) {
            TagToken node = remove(size() - 1);
            if (size() == 0) {
                // last element in the list
                fNodeList.add(node);
            } else {
                TagToken topNode = peek();
                if (topNode instanceof TagNode) {
                    ((TagNode) topNode).addChild(node);
                } else {
                    throw new UnsupportedOperationException("No TagNode available!");
                }
View Full Code Here


        return fNodeList;
    }

    public void append(BaseToken contentNode) {
        if (size() > 0) {
            TagToken node = peek();
            if (node instanceof TagNode) {
                ((TagNode) node).addChild(contentNode);
            } else {
                throw new UnsupportedOperationException("No TagNode available for tag: " + node.getName());
            }
        } else {
            fNodeList.add(contentNode);
        }
    }
View Full Code Here

   *
   * @return The <code>TagToken</code> at the top of this stack.
   */
  public TagToken pop() {
    if (size() > 0) {
      TagToken node = remove(size() - 1);
      if (size() == 0) {
        // last element in the list
        fNodeList.add(node);
      } else {
        TagToken topNode = peek();
        if (topNode instanceof TagNode) {
          ((TagNode) topNode).addChild(node);
        } else {
          throw new UnsupportedOperationException("No TagNode available!");
        }
View Full Code Here

    return fNodeList;
  }

  public void append(BaseToken contentNode) {
    if (size() > 0) {
      TagToken node = peek();
      if (node instanceof TagNode) {
        ((TagNode) node).addChild(contentNode);
      } else {
        throw new UnsupportedOperationException("No TagNode available for tag: " + node.getName());
      }
    } else {
      fNodeList.add(contentNode);
    }
  }
View Full Code Here

                // if (fCurrentPosition > 1) {
                // addParagraph();
                // }
                // }
              } else {
                TagToken tag = fWikiModel.peekNode();
                if (tag instanceof WPPreTag) {
                  addPreformattedText();
                  // } else if (tag instanceof PTag) {
                  // createContentToken(fWhiteStart, fWhiteStartPosition, 2);
                  // reduceTokenStack(Configuration.HTML_PARAGRAPH_OPEN);
                } else {
                  String allowedParents = Configuration.HTML_PARAGRAPH_OPEN.getParents();
                  if (allowedParents != null) {

                    int index = -1;
                    index = allowedParents.indexOf("|" + tag.getName() + "|");
                    if (index >= 0) {
                      addParagraph();
                    }
                  }
                }
              }
            }
          }
        }

        // ---------Identify the next token-------------
        switch (fCurrentCharacter) {
        case '[':
          if (parseWikiLink()) {
            continue;
          }
          break;
        case '\'':
          if (getNextChar('\'')) {
            if (getNextChar('\'')) {
              if (getNextChar('\'')) {
                if (getNextChar('\'')) {
                  createContentToken(5);
                  return TokenBOLDITALIC;
                }
                fCurrentPosition -= 1;
                fWhiteStart = true;
                createContentToken(3);
                return TokenBOLD;
              }
              createContentToken(3);
              return TokenBOLD;
            }
            createContentToken(2);
            return TokenITALIC;
          }
          break;
        case '<':
          if (fHtmlCodes) {
            int htmlStartPosition = fCurrentPosition;
            // HTML tags are allowed
            try {
              switch (fStringSource.charAt(fCurrentPosition)) {
              case '!': // <!-- HTML comment -->
                if (parseHTMLCommentTags()) {
                  continue;
                }
                break;
              default:

                if (fSource[fCurrentPosition] != '/') {
                  // opening HTML tag
                  WikiTagNode tagNode = parseTag(fCurrentPosition);
                  if (tagNode != null) {
                    String tagName = tagNode.getTagName();
                    TagToken tag = fWikiModel.getTokenMap().get(tagName);
                    if (tag != null) {
                      tag = (TagToken) tag.clone();

                      if (tag instanceof TagNode) {
                        TagNode node = (TagNode) tag;
                        List<NodeAttribute> attributes = tagNode.getAttributesEx();
                        Attribute attr;
                        for (int i = 1; i < attributes.size(); i++) {
                          attr = attributes.get(i);
                          node.addAttribute(attr.getName(), attr.getValue(), true);
                        }
                      }
                      if (tag instanceof HTMLTag) {
                        ((HTMLTag) tag).setTemplate(isTemplate());
                      }

                      createContentToken(1);

                      fCurrentPosition = fScannerPosition;

                      String allowedParents = tag.getParents();
                      if (allowedParents != null) {
                        reduceTokenStack(tag);
                      }
                      createTag(tag, tagNode, tagNode.getEndPosition());
                      return TokenIgnore;

                    }
                    break;
                  }
                } else {
                  // closing HTML tag
                  WikiTagNode tagNode = parseTag(++fCurrentPosition);
                  if (tagNode != null) {
                    String tagName = tagNode.getTagName();
                    TagToken tag = fWikiModel.getTokenMap().get(tagName);
                    if (tag != null) {
                      createContentToken(2);
                      fCurrentPosition = fScannerPosition;

                      if (fWikiModel.stackSize() > 0) {
                        TagToken topToken = fWikiModel.peekNode();
                        if (topToken.getName().equals(tag.getName())) {
                          fWikiModel.popNode();
                          return TokenIgnore;
                        } else {
                          if (tag.isReduceTokenStack()) {
                            reduceStackUntilToken(tag);
View Full Code Here

  }

  private void reduceTokenStackBoldItalic() {
    boolean found = false;
    while (fWikiModel.stackSize() > 0) {
      TagToken token = fWikiModel.peekNode();//
      if (token.equals(BOLD) || token.equals(ITALIC) || token.equals(BOLDITALIC)) {
        if (fWhiteStart) {
          found = true;
          createContentToken(1);
        }
        fWikiModel.popNode();
View Full Code Here

   * stack
   */
  private void reduceTokenStack(TagToken node) {
    String allowedParents = node.getParents();
    if (allowedParents != null) {
      TagToken tag;
      int index = -1;

      while (fWikiModel.stackSize() > 0) {
        tag = fWikiModel.peekNode();
        index = allowedParents.indexOf("|" + tag.getName() + "|");
        if (index < 0) {
          fWikiModel.popNode();
          if (tag.getName().equals(node.getName())) {
            // for wrong nested HTML tags like <table> <tr><td>number
            // 1<tr><td>number 2</table>
            break;
          }
        } else {
View Full Code Here

  /**
   * Reduce the current token stack until the given nodes name is at the top of
   * the stack. Useful for closing HTML tags.
   */
  private void reduceStackUntilToken(TagToken node) {
    TagToken tag;
    int index = -1;
    String allowedParents = node.getParents();
    while (fWikiModel.stackSize() > 0) {
      tag = fWikiModel.peekNode();
      if (node.getName().equals(tag.getName())) {
        fWikiModel.popNode();
        break;
      }
      if (allowedParents == null) {
        fWikiModel.popNode();
      } else {
        index = allowedParents.indexOf("|" + tag.getName() + "|");
        if (index < 0) {
          fWikiModel.popNode();
        } else {
          break;
        }
View Full Code Here

TOP

Related Classes of info.bliki.htmlcleaner.TagToken

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.