From e5a2b0d442acfb816f7f9a6e0e9661bc87f67cc5 Mon Sep 17 00:00:00 2001
From: Olivier BICHLER <olivier.bichler@cea.fr>
Date: Mon, 17 Mar 2025 14:44:14 +0100
Subject: [PATCH] Remove regex dependency

---
 include/aidge/utils/DynamicAttributes.hpp | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/include/aidge/utils/DynamicAttributes.hpp b/include/aidge/utils/DynamicAttributes.hpp
index be3bc1a97..352ea0f50 100644
--- a/include/aidge/utils/DynamicAttributes.hpp
+++ b/include/aidge/utils/DynamicAttributes.hpp
@@ -19,7 +19,6 @@
 #include <cassert>
 #include <string>
 #include <typeindex>
-#include <regex>
 
 #include "aidge/utils/future_std/any.hpp"
 #include "aidge/utils/Attributes.hpp"
@@ -486,14 +485,24 @@ struct fmt::formatter<T, Char,  std::enable_if_t<std::is_convertible<T*, Aidge::
 
     template<typename FormatContext>
     inline auto format(const Aidge::Attributes& attrs, FormatContext& ctx) const {
+        auto indent = [](const std::string& subAttrs, const std::string& prefix = "  ") {
+            std::string result(prefix);
+            for (size_t i = 0; i < subAttrs.length(); ++i) {
+                result += subAttrs[i];
+                if (subAttrs[i] == '\n') {
+                    result += prefix;
+                }
+            }
+            return result;
+        };
+
         std::string attrsStr;
         for (const auto& attr : attrs.getAttrs()) {
             const auto anyUtilsIt = Aidge::DynamicAttributes::mAnyUtils.find(attr.second.type());
 
             if (attr.second.type() == typeid(Aidge::DynamicAttributes)) {
                 auto subAttrs = anyUtilsIt->second->str(attr.second);
-                subAttrs = std::regex_replace(subAttrs, std::regex("(^|\n)"), "$1  "); 
-                attrsStr += fmt::format("{}:\n{}\n", attr.first, subAttrs);
+                attrsStr += fmt::format("{}:\n{}\n", attr.first, indent(subAttrs));
             }
             else {
                 if (anyUtilsIt != Aidge::DynamicAttributes::mAnyUtils.end()) {
-- 
GitLab