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

    //              if (fCurrentPosition > 1) {
    //                addParagraph();
    //              }
    //            }
              } else {
                TagToken tag = fWikiModel.peekNode();
                if (tag instanceof WPPreTag) {
                  addParagraph();
                  // } 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(fWhiteStart, fWhiteStartPosition, 5);
                  return TokenBOLDITALIC;
                }
                fCurrentPosition -= 1;
                fWhiteStart = true;
                createContentToken(fWhiteStart, fWhiteStartPosition, 3);
                return TokenBOLD;
              }
              createContentToken(fWhiteStart, fWhiteStartPosition, 3);
              return TokenBOLD;
            }
            createContentToken(fWhiteStart, fWhiteStartPosition, 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(fWhiteStart, fWhiteStartPosition, 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(fWhiteStart, fWhiteStartPosition, 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

    if (isStartOfLine()) {
      createContentToken(fWhiteStart, fWhiteStartPosition, 1);

      int startHeadPosition = fCurrentPosition;
      if (readUntilEOL()) {
        TagToken dl = new DlTag();
        TagToken dt = new DtTag();
        reduceTokenStack(dl);
        String head = fStringSource.substring(startHeadPosition, fCurrentPosition);
        int index = head.indexOf(" : ");
        if (index > 0) {
          fWikiModel.pushNode(dl);
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(fWhiteStart, fWhiteStartPosition, 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

          } else {
            if (!isEmptyLine(1)) {
              if (fWikiModel.stackSize() == 0) {
                addParagraph();
              } else {
                TagToken tag = fWikiModel.peekNode();
                if (tag instanceof WPPreTag) {
                  addParagraph();
                  // } 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(fWhiteStart, fWhiteStartPosition, 5);
                  return TokenBOLDITALIC;
                }
                fCurrentPosition -= 1;
                fWhiteStart = true;
                createContentToken(fWhiteStart, fWhiteStartPosition, 3);
                return TokenBOLD;
              }
              createContentToken(fWhiteStart, fWhiteStartPosition, 3);
              return TokenBOLD;
            }
            createContentToken(fWhiteStart, fWhiteStartPosition, 2);
            return TokenITALIC;
          }
          break;
        case 'f': // ftp://
        case 'F':
          if (parseFTPLinks()) {
            continue;
          }
          break;
        case 'h': // http(s)://
        case 'H':
          if (parseHTTPLinks()) {
            continue;
          }
          break;
        case 'i': // "ISBN ..."
        case 'I':
          if (parseISBNLinks()) {
            continue;
          }
          break;
        case 'm': // mailto:
        case 'M':
          if (parseMailtoLinks()) {
            continue;
          }
          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(fWhiteStart, fWhiteStartPosition, 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(fWhiteStart, fWhiteStartPosition, 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

    if (isStartOfLine()) {
      createContentToken(fWhiteStart, fWhiteStartPosition, 1);

      int startHeadPosition = fCurrentPosition;
      if (readUntilEOL()) {
        TagToken dl = new DlTag();
        TagToken dt = new DtTag();
        reduceTokenStack(dl);
        String head = new String(fSource, startHeadPosition, fCurrentPosition - startHeadPosition);
        int index = head.indexOf(" : ");
        if (index > 0) {
          fWikiModel.pushNode(dl);
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(fWhiteStart, fWhiteStartPosition, 1);
        }
        fWikiModel.popNode();
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.