25 #include <relpipe/common/type/typedefs.h> |
25 #include <relpipe/common/type/typedefs.h> |
26 |
26 |
27 #include <relpipe/cli/CLI.h> |
27 #include <relpipe/cli/CLI.h> |
28 |
28 |
29 #include "INICommand.h" |
29 #include "INICommand.h" |
|
30 #include "lib/uri.h" |
30 #include "lib/INIReader.h" |
31 #include "lib/INIReader.h" |
31 #include "lib/BasicUnescapingProcessor.h" |
32 #include "lib/BasicUnescapingProcessor.h" |
32 #include "lib/BackspaceUnescapingProcessor.h" |
33 #include "lib/BackspaceUnescapingProcessor.h" |
33 #include "lib/JavaPropertiesUnescapingProcessor.h" |
34 #include "lib/JavaPropertiesUnescapingProcessor.h" |
|
35 #include "lib/JavaPropertiesDialect.h" |
34 |
36 |
35 using namespace std; |
37 using namespace std; |
36 using namespace relpipe::writer; |
38 using namespace relpipe::writer; |
37 using namespace relpipe::in::ini::lib; |
39 using namespace relpipe::in::ini::lib; |
38 |
40 |
169 }; |
171 }; |
170 |
172 |
171 void INICommand::process(std::istream& input, std::shared_ptr<writer::RelationalWriter> writer, Configuration& configuration) { |
173 void INICommand::process(std::istream& input, std::shared_ptr<writer::RelationalWriter> writer, Configuration& configuration) { |
172 FlatINIContentHandler handler(writer, configuration); |
174 FlatINIContentHandler handler(writer, configuration); |
173 std::shared_ptr<INIReader> reader(INIReader::create(input)); |
175 std::shared_ptr<INIReader> reader(INIReader::create(input)); |
174 reader->addUnescapingProcessor(std::make_shared<BasicUnescapingProcessor>(), "unescape-basic", true); |
176 reader->addUnescapingProcessor(std::make_shared<BasicUnescapingProcessor>(), unescaping::Basic, true); |
175 reader->addUnescapingProcessor(std::make_shared<JavaPropertiesUnescapingProcessor>(), "unescape-java-properties", false); |
177 reader->addUnescapingProcessor(std::make_shared<JavaPropertiesUnescapingProcessor>(), unescaping::JavaProperties, false); |
176 reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(false), "unescape-backspace-disorder", false); |
178 reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(false), unescaping::BackspaceDisorder, false); |
177 reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(), "unescape-backspace", true); |
179 reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(), unescaping::Backspace, true); |
|
180 reader->addDialect(std::make_shared<JavaPropertiesDialect>(), dialect::JavaProperties, false); |
178 reader->addHandler(&handler); |
181 reader->addHandler(&handler); |
179 // TODO: smart pointers vs. references: are we going to call addUnescapingProcessor() dynamically/conditionally or share instances? Then pointers will be better. |
182 // TODO: smart pointers vs. references: are we going to call addUnescapingProcessor() dynamically/conditionally or share instances? Then pointers will be better. |
180 for (ParserOptionRecipe option : configuration.parserOptions) reader->setOption(convertor.to_bytes(option.uri), convertor.to_bytes(option.value)); |
183 for (ParserOptionRecipe option : configuration.parserOptions) reader->setOption(convertor.to_bytes(option.uri), convertor.to_bytes(option.value)); |
181 reader->process(); |
184 reader->process(); |
182 |
185 |