aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/makamys/neodymium/config/HumanReadableConfigElement.java
blob: 761f1147c350202ee00be067d10409a6f591538d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package makamys.neodymium.config;

import net.minecraftforge.common.config.ConfigElement;
import net.minecraftforge.common.config.Property;

public class HumanReadableConfigElement extends ConfigElement {

    public HumanReadableConfigElement(Property prop) {
        super(prop);
    }
    
    @Override
    public String getName() {
        return decamelize(super.getName());
    }
    
    private static String decamelize(String s) {
        boolean[] spaceField = new boolean[s.length()];
        
        for(int i = 0; i < s.length(); i++) {
            if(i > 0 && i < s.length() && !Character.isUpperCase(s.charAt(i - 1)) && Character.isUpperCase(s.charAt(i))) {
                spaceField[i] = true;
            } else if(i > 2 && Character.isUpperCase(s.charAt(i - 2)) && Character.isUpperCase(s.charAt(i - 1)) && !Character.isUpperCase(s.charAt(i))) {
                spaceField[i - 1] = true;
            }
        }
        
        String out = "";
        for(int i = 0; i < s.length(); i++) {
            if(spaceField[i]) {
                out += " ";
            }
            out += i == 0 ? Character.toUpperCase(s.charAt(i)) : s.charAt(i);
        }
        
        return out;
    }

}