1 /* 2 * Copyright 2015 Google Inc. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 * in compliance with the License. You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software distributed under the License 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 * or implied. See the License for the specific language governing permissions and limitations under 12 * the License. 13 */ 14 15 package com.google.googlejavaformat; 16 17 import com.google.googlejavaformat.Input.Tok; 18 import java.util.Optional; 19 import java.util.regex.Pattern; 20 21 /** 22 * Rewrite comments. This interface is implemented by {@link 23 * com.google.googlejavaformat.java.JavaCommentsHelper JavaCommentsHelper}. 24 */ 25 public interface CommentsHelper { 26 /** 27 * Try to rewrite comments, returning rewritten text. 28 * 29 * @param tok the comment's tok 30 * @param maxWidth the line length for the output 31 * @param column0 the current column 32 * @return the rewritten comment 33 */ rewrite(Input.Tok tok, int maxWidth, int column0)34 String rewrite(Input.Tok tok, int maxWidth, int column0); 35 reformatParameterComment(Tok tok)36 static Optional<String> reformatParameterComment(Tok tok) { 37 if (!tok.isSlashStarComment()) { 38 return Optional.empty(); 39 } 40 var match = PARAMETER_COMMENT.matcher(tok.getOriginalText()); 41 if (!match.matches()) { 42 return Optional.empty(); 43 } 44 return Optional.of(String.format("/* %s= */", match.group(1))); 45 } 46 47 Pattern PARAMETER_COMMENT = 48 Pattern.compile( 49 "/\\*\\s*(\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*(\\Q...\\E)?)\\s*=\\s*\\*/"); 50 } 51