2010-10-18 11:05:53 +04:00
|
|
|
#include "yaml-cpp/yaml.h"
|
2010-10-22 02:02:29 +04:00
|
|
|
#include "yaml-cpp/eventhandler.h"
|
2009-07-10 07:10:03 +04:00
|
|
|
#include <fstream>
|
|
|
|
#include <iostream>
|
2010-10-18 10:45:03 +04:00
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
struct Params {
|
|
|
|
bool hasFile;
|
|
|
|
std::string fileName;
|
|
|
|
};
|
|
|
|
|
|
|
|
Params ParseArgs(int argc, char **argv) {
|
|
|
|
Params p;
|
|
|
|
|
|
|
|
std::vector<std::string> args(argv + 1, argv + argc);
|
|
|
|
|
|
|
|
return p;
|
|
|
|
}
|
2009-07-10 07:10:03 +04:00
|
|
|
|
2010-10-22 02:02:29 +04:00
|
|
|
class NullEventHandler: public YAML::EventHandler
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual void OnDocumentStart(const YAML::Mark&) {}
|
|
|
|
virtual void OnDocumentEnd() {}
|
|
|
|
|
2011-03-03 03:19:26 +03:00
|
|
|
virtual void OnNull(const YAML::Mark&, YAML::anchor_t) {}
|
2010-10-22 02:02:29 +04:00
|
|
|
virtual void OnAlias(const YAML::Mark&, YAML::anchor_t) {}
|
|
|
|
virtual void OnScalar(const YAML::Mark&, const std::string&, YAML::anchor_t, const std::string&) {}
|
|
|
|
|
|
|
|
virtual void OnSequenceStart(const YAML::Mark&, const std::string&, YAML::anchor_t) {}
|
|
|
|
virtual void OnSequenceEnd() {}
|
|
|
|
|
|
|
|
virtual void OnMapStart(const YAML::Mark&, const std::string&, YAML::anchor_t) {}
|
|
|
|
virtual void OnMapEnd() {}
|
|
|
|
};
|
|
|
|
|
2009-07-10 07:10:03 +04:00
|
|
|
int main(int argc, char **argv)
|
|
|
|
{
|
2010-10-18 10:45:03 +04:00
|
|
|
Params p = ParseArgs(argc, argv);
|
|
|
|
|
2009-07-10 08:25:11 +04:00
|
|
|
std::ifstream fin;
|
|
|
|
if(argc > 1)
|
|
|
|
fin.open(argv[1]);
|
|
|
|
|
|
|
|
std::istream& input = (argc > 1 ? fin : std::cin);
|
2009-07-10 07:10:03 +04:00
|
|
|
try {
|
2009-07-10 08:25:11 +04:00
|
|
|
YAML::Parser parser(input);
|
2009-09-29 22:25:11 +04:00
|
|
|
YAML::Node doc;
|
2010-10-22 02:02:29 +04:00
|
|
|
NullEventHandler handler;
|
2010-10-22 07:53:33 +04:00
|
|
|
while(parser.GetNextDocument(doc)) {
|
|
|
|
YAML::Emitter emitter;
|
|
|
|
emitter << doc;
|
|
|
|
std::cout << emitter.c_str() << "\n";
|
2009-07-10 08:25:11 +04:00
|
|
|
}
|
2009-07-10 07:10:03 +04:00
|
|
|
} catch(const YAML::Exception& e) {
|
2009-07-10 08:17:30 +04:00
|
|
|
std::cerr << e.what() << "\n";
|
2009-07-10 07:10:03 +04:00
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|