src/INICommand.cpp
branchv_0
changeset 27 e9aad9dd823a
parent 23 b497140b0b63
child 28 596a724fbb83
equal deleted inserted replaced
26:b1f6fa3a6555 27:e9aad9dd823a
    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/INIReader.h"
    30 #include "lib/INIReader.h"
    31 #include "lib/BasicUnescapingINIHandler.h"
    31 #include "lib/BasicUnescapingProcessor.h"
    32 #include "lib/JavaPropertiesUnescapingINIHandler.h"
    32 #include "lib/BackspaceUnescapingProcessor.h"
       
    33 #include "lib/JavaPropertiesUnescapingProcessor.h"
    33 
    34 
    34 using namespace std;
    35 using namespace std;
    35 using namespace relpipe::writer;
    36 using namespace relpipe::writer;
    36 using namespace relpipe::in::ini::lib;
    37 using namespace relpipe::in::ini::lib;
    37 
    38 
   168 };
   169 };
   169 
   170 
   170 void INICommand::process(std::istream& input, std::shared_ptr<writer::RelationalWriter> writer, Configuration& configuration) {
   171 void INICommand::process(std::istream& input, std::shared_ptr<writer::RelationalWriter> writer, Configuration& configuration) {
   171 	FlatINIContentHandler handler(writer, configuration);
   172 	FlatINIContentHandler handler(writer, configuration);
   172 	std::shared_ptr<INIReader> reader(INIReader::create(input));
   173 	std::shared_ptr<INIReader> reader(INIReader::create(input));
       
   174 	reader->addUnescapingProcessor(std::make_shared<BasicUnescapingProcessor>(), "unescape-basic", true);
       
   175 	reader->addUnescapingProcessor(std::make_shared<JavaPropertiesUnescapingProcessor>(), "unescape-java-properties", false);
       
   176 	reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(false), "unescape-backspace-disorder", false);
       
   177 	reader->addUnescapingProcessor(std::make_shared<BackspaceUnescapingProcessor>(), "unescape-backspace", true);
       
   178 	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.
   173 	for (ParserOptionRecipe option : configuration.parserOptions) reader->setOption(convertor.to_bytes(option.uri), convertor.to_bytes(option.value));
   180 	for (ParserOptionRecipe option : configuration.parserOptions) reader->setOption(convertor.to_bytes(option.uri), convertor.to_bytes(option.value));
   174 	BasicUnescapingINIContentHandler unescapingHandler(handler, false);
       
   175 	JavaPropertiesUnescapingINIContentHandler javaHandler(unescapingHandler, true);
       
   176 	reader->addHandler(&javaHandler);
       
   177 	reader->process();
   181 	reader->process();
   178 
   182 
   179 }
   183 }
   180 
   184 
   181 }
   185 }