From c90f5415be4956c092ae8ca5d76df4c2397b58a4 Mon Sep 17 00:00:00 2001
From: maitesin <violador.de.segmentos@gmail.com>
Date: Sun, 9 Aug 2015 14:40:50 +0100
Subject: [PATCH] Refactored a piece of code repeted three time. Created a
 function to replace this duplication of code.

---
 src/Mhwd.cpp | 38 ++++++++++++++------------------------
 src/Mhwd.hpp |  1 +
 2 files changed, 15 insertions(+), 24 deletions(-)

diff --git a/src/Mhwd.cpp b/src/Mhwd.cpp
index dc59918..e1f3dc7 100644
--- a/src/Mhwd.cpp
+++ b/src/Mhwd.cpp
@@ -54,29 +54,16 @@ bool Mhwd::performTransaction(std::shared_ptr<Config> config, MHWD::TRANSACTIONT
         // Print conflicts
         if (!transaction.conflictedConfigs_.empty())
         {
-            std::string conflicts;
-
-            for (auto&& conflictedConfig : transaction.conflictedConfigs_)
-            {
-                conflicts += " " + conflictedConfig->name_;
-            }
-
             consoleWriter_.printError("config '" + config->name_ + "' conflicts with config(s):" +
-                    conflicts);
+                    gatherConfigContent(transaction.conflictedConfigs_));
             return false;
         }
 
         // Print dependencies
         else if (!transaction.dependencyConfigs_.empty())
         {
-            std::string dependencies;
-
-            for (auto&& dependencyConfig : transaction.dependencyConfigs_)
-            {
-                dependencies += " " + dependencyConfig->name_;
-            }
-
-            consoleWriter_.printStatus("Dependencies to install:" + dependencies +
+            consoleWriter_.printStatus("Dependencies to install:" +
+                    gatherConfigContent(transaction.dependencyConfigs_) +
                     "\nProceed with installation? [Y/n]");
             std::string input;
             std::getline(std::cin, input);
@@ -88,15 +75,8 @@ bool Mhwd::performTransaction(std::shared_ptr<Config> config, MHWD::TRANSACTIONT
         // Print requirements
         if (!transaction.configsRequirements_.empty())
         {
-            std::string requirements;
-
-            for (auto&& requirement : transaction.configsRequirements_)
-            {
-                requirements += " " + requirement->name_;
-            }
-
             consoleWriter_.printError("config '" + config->name_ + "' is required by config(s):" +
-                    requirements);
+                    gatherConfigContent(transaction.configsRequirements_));
             return false;
         }
     }
@@ -1279,3 +1259,13 @@ int Mhwd::launch(int argc, char *argv[])
     }
     return 0;
 }
+
+std::string Mhwd::gatherConfigContent(const std::vector<std::shared_ptr<Config>> & configuration) const
+{
+    std::string config;
+    for (auto&& c : configuration)
+    {
+        config += " " + c->name_;
+    }
+    return config;
+}
\ No newline at end of file
diff --git a/src/Mhwd.hpp b/src/Mhwd.hpp
index 32c6ab3..24434c7 100644
--- a/src/Mhwd.hpp
+++ b/src/Mhwd.hpp
@@ -100,6 +100,7 @@ private:
     void tryToParseCmdLineOptions(int argc, char* argv[], bool& autoConfigureNonFreeDriver,
             std::string& operationType, std::string& autoConfigureClassID);
     bool optionsDontInterfereWithEachOther() const;
+    std::string gatherConfigContent(const std::vector<std::shared_ptr<Config>> & config) const;
 };
 
 #endif /* MHWD_HPP_ */
-- 
GitLab