From 5cabb1e6a8e94dac78aa11c93f9d093bab16ab0d Mon Sep 17 00:00:00 2001
From: Colin DAMON <cdamon@ippon.fr>
Date: Tue, 24 Nov 2020 13:40:13 +0100
Subject: [PATCH] Inline optional

---
 .../src/main/java/fr/ippon/kata/numeral/Numerals.java     | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

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 2217498c..9f8f42a1 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() {
-- 
GitLab