public static String getNaturalName()

in grails-forge-core/src/main/java/org/grails/forge/util/NameUtils.java [480:514]


    public static String getNaturalName(String name) {
        name = getShortName(name);

        if (isBlank(name)) {
            return name;
        }

        if (name.length() == 1) {
            return name.toUpperCase();
        } else {
            StringBuilder sb = new StringBuilder();
            sb.append(name.charAt(name.length() - 1));
            //Traversing the string in reverse order
            for (int i = name.length() - 2; i > 0; i--) {
                char currChar = name.charAt(i);
                char prevChar = name.charAt(i - 1);
                char nextChar = name.charAt(i + 1);

                boolean isCurrentCharLowerCase = Character.isLowerCase(currChar);
                boolean isPrevCharLowerCase = Character.isLowerCase(prevChar);
                boolean isNextCharLowerCase = Character.isLowerCase(nextChar);

                if (isCurrentCharLowerCase != isPrevCharLowerCase && !isCurrentCharLowerCase) {
                    sb.append(currChar).append(" ");
                } else if (isCurrentCharLowerCase == isPrevCharLowerCase && !isCurrentCharLowerCase && isNextCharLowerCase) {
                    sb.append(currChar).append(" ");
                } else {
                    sb.append(currChar);
                }
            }
            //The first character of the string is always in Upper case
            sb.append(Character.toUpperCase(name.charAt(0)));
            return sb.reverse().toString();
        }
    }