Package info.bliki.htmlcleaner

Examples of info.bliki.htmlcleaner.TagToken


   * 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

   * stack
   */
  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;
          }
        } else {
View Full Code Here

          imageHref = imageHref.replace("${title}", imageNamespace + ':' + 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 {
                      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()) {
                            reduceStackUntilToken(tag);
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

  }

  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

              // 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 {
                      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()) {
                            reduceStackUntilToken(tag);
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.