/*
* Copyright (c) 2012-2016, Luigi R. Viggiano
* All rights reserved.
*
* This software is distributable under the BSD license.
* See the terms of the BSD license in the documentation provided with this software.
*/
package org.aeonbits.owner.converters;
/**
* A utility class for converters.
*
* @author Stefan Freyr Stefansson
*/
class ConverterUtil {
/**
* Splits a string into a numeric part and a character part. The input string should conform to the format
* <code>[numeric_part][char_part]</code> with an optional whitespace between the two parts.
*
* The <code>char_part</code> should only contain letters as defined by {@link Character#isLetter(char)} while
* the <code>numeric_part</code> will be parsed regardless of content.
*
* Any whitespace will be trimmed from the beginning and end of both parts, however, the <code>numeric_part</code>
* can contain whitespaces within it.
*
* @param input the string to split.
*
* @return an array of two strings.
*/
static String[] splitNumericAndChar(String input){
// ATTN: String.trim() may not trim all UTF-8 whitespace characters properly.
// The original implementation used its own unicodeTrim() method that I decided not to include until the need
// arises. For more information, see:
// https://github.com/typesafehub/config/blob/v1.3.0/config/src/main/java/com/typesafe/config/impl/ConfigImplUtil.java#L118-L164
int i = input.length() - 1;
while (i >= 0) {
char c = input.charAt(i);
if (!Character.isLetter(c))
break;
i -= 1;
}
return new String[]{input.substring(0,i+1).trim(), input.substring(i + 1).trim()};
}
}