17 #pragma once |
17 #pragma once |
18 |
18 |
19 #include <stdexcept> |
19 #include <stdexcept> |
20 #include <libxml++-2.6/libxml++/libxml++.h> |
20 #include <libxml++-2.6/libxml++/libxml++.h> |
21 |
21 |
|
22 #include "lib/uri.h" |
22 #include "lib/INIReader.h" |
23 #include "lib/INIReader.h" |
23 #include "lib/BasicUnescapingProcessor.h" |
24 #include "lib/BasicUnescapingProcessor.h" |
24 #include "lib/BackspaceUnescapingProcessor.h" |
25 #include "lib/BackspaceUnescapingProcessor.h" |
25 #include "lib/JavaPropertiesUnescapingProcessor.h" |
26 #include "lib/JavaPropertiesUnescapingProcessor.h" |
|
27 #include "lib/JavaPropertiesDialect.h" |
26 #include "lib/XMLNameCodec.h" |
28 #include "lib/XMLNameCodec.h" |
27 |
29 |
28 using namespace relpipe::in::ini::lib; |
30 using namespace relpipe::in::ini::lib; |
29 |
31 |
30 namespace relpipe { |
32 namespace relpipe { |
110 } |
112 } |
111 |
113 |
112 void process() { |
114 void process() { |
113 HierarchicalINIContentHandler handler(parser); |
115 HierarchicalINIContentHandler handler(parser); |
114 std::shared_ptr<INIReader> reader(INIReader::create(*input)); |
116 std::shared_ptr<INIReader> reader(INIReader::create(*input)); |
115 reader->addUnescapingProcessor(std::make_shared<BasicUnescapingProcessor>(), "unescape-basic", true); |
117 reader->addUnescapingProcessor(std::make_shared<BasicUnescapingProcessor>(), unescaping::Basic, true); |
116 reader->addUnescapingProcessor(std::make_shared<JavaPropertiesUnescapingProcessor>(), "unescape-java-properties", false); |
118 reader->addUnescapingProcessor(std::make_shared<JavaPropertiesUnescapingProcessor>(), unescaping::JavaProperties, false); |
117 reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(false), "unescape-backspace-disorder", false); |
119 reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(), unescaping::Backspace, true); |
118 reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(), "unescape-backspace", true); |
120 reader->addDialect(std::make_shared<JavaPropertiesDialect>(), dialect::JavaProperties, false); |
119 reader->addHandler(&handler); |
121 reader->addHandler(&handler); |
120 // TODO: smart pointers vs. references: are we going to call addUnescapingProcessor() dynamically/conditionally or share instances? Then pointers will be better. |
122 // TODO: smart pointers vs. references: are we going to call addUnescapingProcessor() dynamically/conditionally or share instances? Then pointers will be better. |
121 // TODO: call setOption() according to the configuration |
123 // TODO: call setOption() according to the configuration |
122 // for (ParserOptionRecipe option : configuration.parserOptions) reader->setOption(convertor.to_bytes(option.uri), convertor.to_bytes(option.value)); |
124 // for (ParserOptionRecipe option : configuration.parserOptions) reader->setOption(convertor.to_bytes(option.uri), convertor.to_bytes(option.value)); |
123 reader->process(); |
125 reader->process(); |