• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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