• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2007 Mockito contributors
3  * This program is made available under the terms of the MIT License.
4  */
5 
6 package org.mockito.internal.util;
7 
8 import java.util.regex.Matcher;
9 import java.util.regex.Pattern;
10 
11 //TODO SF move to matchers.text
12 public class Decamelizer {
13 
14 private static final Pattern CAPS = Pattern.compile("([A-Z\\d][^A-Z\\d]*)");
15 
decamelizeMatcher(String className)16     public static String decamelizeMatcher(String className) {
17         if (className.length() == 0) {
18             return "<custom argument matcher>";
19         }
20 
21         String decamelized = decamelizeClassName(className);
22 
23         if (decamelized.length() == 0) {
24             return "<" + className + ">";
25         }
26 
27         return "<" + decamelized + ">";
28     }
29 
decamelizeClassName(String className)30     private static String decamelizeClassName(String className) {
31         Matcher match = CAPS.matcher(className);
32         StringBuilder deCameled = new StringBuilder();
33         while(match.find()) {
34             if (deCameled.length() == 0) {
35                 deCameled.append(match.group());
36             } else {
37                 deCameled.append(" ");
38                 deCameled.append(match.group().toLowerCase());
39             }
40         }
41         return deCameled.toString();
42     }
43 }
44