2009-07-10 07:10:03 +04:00
|
|
|
#include <fstream>
|
|
|
|
#include <iostream>
|
2010-10-18 10:45:03 +04:00
|
|
|
#include <vector>
|
|
|
|
|
2014-03-23 08:14:48 +04:00
|
|
|
#include "yaml-cpp/eventhandler.h"
|
|
|
|
#include "yaml-cpp/yaml.h" // IWYU pragma: keep
|
|
|
|
|
2010-10-18 10:45:03 +04:00
|
|
|
struct Params {
|
2014-03-22 22:05:03 +04:00
|
|
|
bool hasFile;
|
|
|
|
std::string fileName;
|
2010-10-18 10:45:03 +04:00
|
|
|
};
|
|
|
|
|
2014-03-22 22:05:03 +04:00
|
|
|
Params ParseArgs(int argc, char** argv) {
|
|
|
|
Params p;
|
2010-10-18 10:45:03 +04:00
|
|
|
|
2014-03-22 22:05:03 +04:00
|
|
|
std::vector<std::string> args(argv + 1, argv + argc);
|
|
|
|
|
|
|
|
return p;
|
2010-10-18 10:45:03 +04:00
|
|
|
}
|
2009-07-10 07:10:03 +04:00
|
|
|
|
2014-03-22 22:05:03 +04:00
|
|
|
class NullEventHandler : public YAML::EventHandler {
|
|
|
|
public:
|
|
|
|
virtual void OnDocumentStart(const YAML::Mark&) {}
|
|
|
|
virtual void OnDocumentEnd() {}
|
|
|
|
|
|
|
|
virtual void OnNull(const YAML::Mark&, YAML::anchor_t) {}
|
|
|
|
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() {}
|
2010-10-22 02:02:29 +04:00
|
|
|
};
|
|
|
|
|
2014-03-22 22:05:03 +04:00
|
|
|
void parse(std::istream& input) {
|
|
|
|
try {
|
|
|
|
YAML::Node doc = YAML::Load(input);
|
|
|
|
std::cout << doc << "\n";
|
2015-01-24 22:11:43 +03:00
|
|
|
} catch (const YAML::Exception& e) {
|
2014-03-22 22:05:03 +04:00
|
|
|
std::cerr << e.what() << "\n";
|
|
|
|
}
|
2011-03-03 23:01:32 +03:00
|
|
|
}
|
|
|
|
|
2014-03-22 22:05:03 +04:00
|
|
|
int main(int argc, char** argv) {
|
|
|
|
Params p = ParseArgs(argc, argv);
|
2011-03-03 23:01:32 +03:00
|
|
|
|
2014-03-22 22:05:03 +04:00
|
|
|
if (argc > 1) {
|
|
|
|
std::ifstream fin;
|
|
|
|
fin.open(argv[1]);
|
|
|
|
parse(fin);
|
|
|
|
} else {
|
|
|
|
parse(std::cin);
|
|
|
|
}
|
2011-03-03 23:01:32 +03:00
|
|
|
|
2014-03-22 22:05:03 +04:00
|
|
|
return 0;
|
2009-07-10 07:10:03 +04:00
|
|
|
}
|