diff --git a/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java b/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java index 2217498c9a9b40cce0f86b94407dc096804c546c..9f8f42a12cfd11ad15b5a7564d03c89da71d805e 100644 --- a/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java +++ b/tcr-roman-numerals/src/main/java/fr/ippon/kata/numeral/Numerals.java @@ -4,13 +4,17 @@ import java.util.Map.Entry; import java.util.NavigableMap; import java.util.Optional; import java.util.TreeMap; +import java.util.function.Function; public class Numerals { private static final NavigableMap<Integer, String> CONVERSIONS = buildConversions(); public static String toRoman(int arabic) { - Optional<Entry<Integer, String>> highestKnownConversion = Optional.ofNullable(CONVERSIONS.floorEntry(arabic)); - return highestKnownConversion.map(conversion -> conversion.getValue() + toRoman(arabic - conversion.getKey())).orElse(""); + return Optional.ofNullable(CONVERSIONS.floorEntry(arabic)).map(romanRepresentation(arabic)).orElse(""); + } + + private static Function<Entry<Integer, String>, String> romanRepresentation(int arabic) { + return conversion -> conversion.getValue() + toRoman(arabic - conversion.getKey()); } private static NavigableMap<Integer, String> buildConversions() {