package org.plantuml.idea.intentions; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import org.apache.commons.lang.ArrayUtils; public class ArrowUtils { private static HashBiMap<Character, Character> characterCharacterBiMap; private static BiMap<Character, Character> inverse; static { characterCharacterBiMap = HashBiMap.create(); inverse = characterCharacterBiMap.inverse(); characterCharacterBiMap.put('<', '>'); characterCharacterBiMap.put('\\', '/'); characterCharacterBiMap.put('[', ']'); } /** * @return only the arrow, reversed */ public static char[] cutArrowAndReverse(char[] chars, int start, int end) { char[] subarray = ArrayUtils.subarray(chars, start, Math.min(end + 1, chars.length)); ArrayUtils.reverse(subarray); for (int i = 0; i < subarray.length; i++) { subarray[i] = reverseArrowChar(subarray[i]); } return subarray; } public static char reverseArrowChar(char aChar) { Character character = characterCharacterBiMap.get(aChar); if (character == null) { character = inverse.get(aChar); } if (character == null) { character = aChar; } return character; } }