173 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) { |
174 FlatINIContentHandler handler(writer, configuration); |
174 FlatINIContentHandler handler(writer, configuration); |
175 std::shared_ptr<INIReader> reader(INIReader::create(input)); |
175 std::shared_ptr<INIReader> reader(INIReader::create(input)); |
176 reader->addUnescapingProcessor(std::make_shared<BasicUnescapingProcessor>(), unescaping::Basic, true); |
176 reader->addUnescapingProcessor(std::make_shared<BasicUnescapingProcessor>(), unescaping::Basic, true); |
177 reader->addUnescapingProcessor(std::make_shared<JavaPropertiesUnescapingProcessor>(), unescaping::JavaProperties, false); |
177 reader->addUnescapingProcessor(std::make_shared<JavaPropertiesUnescapingProcessor>(), unescaping::JavaProperties, false); |
178 reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(false), unescaping::BackspaceDisorder, false); |
|
179 reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(), unescaping::Backspace, true); |
178 reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(), unescaping::Backspace, true); |
180 reader->addDialect(std::make_shared<JavaPropertiesDialect>(), dialect::JavaProperties, false); |
179 reader->addDialect(std::make_shared<JavaPropertiesDialect>(), dialect::JavaProperties, false); |
181 reader->addHandler(&handler); |
180 reader->addHandler(&handler); |
182 // TODO: smart pointers vs. references: are we going to call addUnescapingProcessor() dynamically/conditionally or share instances? Then pointers will be better. |
181 // TODO: smart pointers vs. references: are we going to call addUnescapingProcessor() dynamically/conditionally or share instances? Then pointers will be better. |
183 for (ParserOptionRecipe option : configuration.parserOptions) reader->setOption(convertor.to_bytes(option.uri), convertor.to_bytes(option.value)); |
182 for (ParserOptionRecipe option : configuration.parserOptions) reader->setOption(convertor.to_bytes(option.uri), convertor.to_bytes(option.value)); |