Package info.bliki.htmlcleaner

Examples of info.bliki.htmlcleaner.TagToken


              // 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;
                        String temp;
                        for (int i = 1; i < attributes
                            .size(); i++) {
                          attr = attributes.get(i);
                          temp = attr.getValue();
                          if (temp != null) {
                            temp = parseNowiki(temp);
                          }
                          node.addAttribute(
                              attr.getName(),
                              temp, true);
                        }
                      }
                      if (tag instanceof HTMLTag) {
                        ((HTMLTag) tag)
                            .setTemplate(isTemplate());
                      }

                      createContentToken(1);

                      fCurrentPosition = fScannerPosition;

                      String allowedParents = tag
                          .getParents();
                      if (allowedParents != null) {
                        fWikiModel
                            .reduceTokenStack(tag);
                      }
                      createTag(tag, tagNode,
                          tagNode.getEndPosition());
                      return TokenIgnore;
                    } else {
                      fCurrentPosition = tagNode.getEndPosition();
                      // fWhiteStart = true;
                      // skipUntilEndOfTag(tagNode,
                      // tagNode.getEndPosition());
                      // createContentToken(0);
                      // 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()) {
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.
   */
  protected 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

              + ':' + imageName);
        }
      }
      imageSrc = imageSrc.replace("${image}", imageName);
      String type = imageFormat.getType();
      TagToken tag = null;
      if ("thumb".equals(type) || "frame".equals(type)) {
        if (fTagStack.size() > 0) {
          tag = peekNode();
        }
        reduceTokenStack(Configuration.HTML_DIV_OPEN);
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;
                                                String temp;
                                                for (int i = 1; i < attributes
                                                        .size(); i++) {
                                                    attr = attributes.get(i);
                                                    temp = attr.getValue();
                                                    if (temp != null) {
                                                        temp = parseNowiki(temp);
                                                    }
                                                    node.addAttribute(
                                                            attr.getName(),
                                                            temp, true);
                                                }
                                            }
                                            if (tag instanceof HTMLTag) {
                                                ((HTMLTag) tag)
                                                        .setTemplate(isTemplate());
                                            }

                                            createContentToken(1);

                                            fCurrentPosition = fScannerPosition;

                                            String allowedParents = tag
                                                    .getParents();
                                            if (allowedParents != null) {
                                                fWikiModel
                                                        .reduceTokenStack(tag);
                                            }
                                            createTag(tag, tagNode,
                                                    tagNode.getEndPosition());
                                            return TokenIgnore;
                                        } else {
                                            fCurrentPosition = tagNode.getEndPosition();
                                            // fWhiteStart = true;
                                            // skipUntilEndOfTag(tagNode,
                                            // tagNode.getEndPosition());
                                            // createContentToken(0);
                                            // 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()) {
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.
     */
    protected 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

                                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 instanceof HTMLBlockTag)) {
                                            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) && !(tag instanceof HTMLBlockTag)) {
                                            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

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

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

                            + ':' + imageName);
                }
            }
            imageSrc = imageSrc.replace("${image}", imageName);
            String type = imageFormat.getType();
            TagToken tag = null;
            if ("thumb".equals(type) || "frame".equals(type)) {
                if (fTagStack.size() > 0) {
                    tag = peekNode();
                }
                reduceTokenStack(Configuration.HTML_DIV_OPEN);
View Full Code Here

    }

    protected 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
     */
    protected 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

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.