JavadocLexer.java 文件源码

java
阅读 28 收藏 0 点赞 0 评论 0

项目:google-java-format 作者:
/**
 * Replaces whitespace after a {@code href=...>} token with an "optional link break." This allows
 * us to output either {@code <a href=foo>foo</a>} or {@code <a href=foo>\nfoo</a>}, depending on
 * how much space we have left on the line.
 *
 * <p>This method must be called after {@link #joinAdjacentLiteralsAndAdjacentWhitespace}, as it
 * assumes that adjacent whitespace tokens have already been joined.
 */
private static ImmutableList<Token> optionalizeSpacesAfterLinks(List<Token> input) {
  ImmutableList.Builder<Token> output = ImmutableList.builder();

  for (PeekingIterator<Token> tokens = peekingIterator(input.iterator()); tokens.hasNext(); ) {
    if (tokens.peek().getType() == LITERAL && tokens.peek().getValue().matches("^href=[^>]*>")) {
      output.add(tokens.next());

      if (tokens.peek().getType() == WHITESPACE) {
        output.add(new Token(OPTIONAL_LINE_BREAK, tokens.next().getValue()));
      }
    } else {
      output.add(tokens.next());
    }
  }

  return output.build();

  /*
   * Note: We do not want to insert <p> tags inside <pre>. Fortunately, the formatter gets that
   * right without special effort on our part. The reason: Line breaks inside a <pre> section are
   * of type FORCED_NEWLINE rather than WHITESPACE.
   */
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号