| #include <fstream> |
| #include <iostream> |
| #include <vector> |
| |
| #include "yaml-cpp/eventhandler.h" |
| #include "yaml-cpp/yaml.h" // IWYU pragma: keep |
| |
| 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; |
| } |
| |
| 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() {} |
| }; |
| |
| void parse(std::istream& input) { |
| try { |
| YAML::Node doc = YAML::Load(input); |
| std::cout << doc << "\n"; |
| } catch (const YAML::Exception& e) { |
| std::cerr << e.what() << "\n"; |
| } |
| } |
| |
| int main(int argc, char** argv) { |
| Params p = ParseArgs(argc, argv); |
| |
| if (argc > 1) { |
| std::ifstream fin; |
| fin.open(argv[1]); |
| parse(fin); |
| } else { |
| parse(std::cin); |
| } |
| |
| return 0; |
| } |