--- a/src/XMLDocumentConstructor.h Thu Nov 26 11:42:26 2020 +0100
+++ b/src/XMLDocumentConstructor.h Sat Nov 28 18:14:15 2020 +0100
@@ -20,8 +20,9 @@
#include <libxml++-2.6/libxml++/libxml++.h>
#include "lib/INIReader.h"
-#include "lib/BasicUnescapingINIHandler.h"
-#include "lib/JavaPropertiesUnescapingINIHandler.h"
+#include "lib/BasicUnescapingProcessor.h"
+#include "lib/BackspaceUnescapingProcessor.h"
+#include "lib/JavaPropertiesUnescapingProcessor.h"
#include "lib/XMLNameCodec.h"
using namespace relpipe::in::ini::lib;
@@ -111,9 +112,14 @@
void process() {
HierarchicalINIContentHandler handler(parser);
std::shared_ptr<INIReader> reader(INIReader::create(*input));
- BasicUnescapingINIContentHandler unescapingHandler(handler, false);
- JavaPropertiesUnescapingINIContentHandler javaHandler(handler, true);
- reader->addHandler(&javaHandler);
+ reader->addUnescapingProcessor(std::make_shared<BasicUnescapingProcessor>(), "unescape-basic", true);
+ reader->addUnescapingProcessor(std::make_shared<JavaPropertiesUnescapingProcessor>(), "unescape-java-properties", false);
+ reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(false), "unescape-backspace-disorder", false);
+ reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(), "unescape-backspace", true);
+ reader->addHandler(&handler);
+ // TODO: smart pointers vs. references: are we going to call addUnescapingProcessor() dynamically/conditionally or share instances? Then pointers will be better.
+ // TODO: call setOption() according to the configuration
+ // for (ParserOptionRecipe option : configuration.parserOptions) reader->setOption(convertor.to_bytes(option.uri), convertor.to_bytes(option.value));
reader->process();
}
};