google-java-format-master/core/src/main/java/com/google/googlejavaformat/CommentsHelper.java
/*
 * Copyright 2015 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package com.google.googlejavaformat;

import com.google.googlejavaformat.Input.Tok;
import java.util.Optional;
import java.util.regex.Pattern;

/**
 * Rewrite comments. This interface is implemented by {@link
 * com.google.googlejavaformat.java.JavaCommentsHelper JavaCommentsHelper}.
 */
public interface CommentsHelper {
  /**
   * Try to rewrite comments, returning rewritten text.
   *
   * @param tok the comment's tok
   * @param maxWidth the line length for the output
   * @param column0 the current column
   * @return the rewritten comment
   */
  String rewrite(Input.Tok tok, int maxWidth, int column0);

  static Optional<String> reformatParameterComment(Tok tok) {
    if (!tok.isSlashStarComment()) {
      return Optional.empty();
    }
    var match = PARAMETER_COMMENT.matcher(tok.getOriginalText());
    if (!match.matches()) {
      return Optional.empty();
    }
    return Optional.of(String.format("/* %s= */", match.group(1)));
  }

  Pattern PARAMETER_COMMENT =
      Pattern.compile(
          "/\\*\\s*(\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*(\\Q...\\E)?)\\s*=\\s*\\*/");
}
