diff options
author | Cheng Hann Gan <chenghanngan.us@gmail.com> | 2021-09-09 19:22:48 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-09 16:22:48 -0700 |
commit | 8237e29a164211eb2ec4cd161eb4183cc1947fee (patch) | |
tree | 67dc502264b755dc620f56969f3bea68a40b17af /tools/jsonproc/jsonproc.cpp | |
parent | 4eff1882443b0004d9c9fa4895cdfefdc356565f (diff) |
Defined more in-dungeon structs and enums (#53)
* Defined DungeonEntity
* Rename EntityType enums
* Revert EntityType rename
* Defined more in-dungeon structs and enums
* Added more dungeon global structs/enums
* Prefixed dungeonGlobalData with g
* Fixed compile errors
* Removed some CRLFs
* Fixed compile after merge
* Revert Makefile
* Rename DungeonEntityData.entityType
Co-authored-by: Seth Barberee <seth.barberee@gmail.com>
* Renamed symbols per PR comments
Co-authored-by: Cheng Hann Gan <chenghann_gan@ultimatesoftware.com>
Co-authored-by: Seth Barberee <seth.barberee@gmail.com>
Diffstat (limited to 'tools/jsonproc/jsonproc.cpp')
-rw-r--r-- | tools/jsonproc/jsonproc.cpp | 218 |
1 files changed, 109 insertions, 109 deletions
diff --git a/tools/jsonproc/jsonproc.cpp b/tools/jsonproc/jsonproc.cpp index 5372194..2ba5fd0 100644 --- a/tools/jsonproc/jsonproc.cpp +++ b/tools/jsonproc/jsonproc.cpp @@ -1,109 +1,109 @@ -// jsonproc.cpp
-
-#include "jsonproc.h"
-
-#include <map>
-
-#include <string>
-using std::string; using std::to_string;
-
-#include <inja.hpp>
-using namespace inja;
-using json = nlohmann::json;
-
-std::map<string, string> customVars;
-
-void set_custom_var(string key, string value)
-{
- customVars[key] = value;
-}
-
-string get_custom_var(string key)
-{
- return customVars[key];
-}
-
-int main(int argc, char *argv[])
-{
- if (argc != 4)
- FATAL_ERROR("USAGE: jsonproc <json-filepath> <template-filepath> <output-filepath>\n");
-
- string jsonfilepath = argv[1];
- string templateFilepath = argv[2];
- string outputFilepath = argv[3];
-
- Environment env;
-
- // Add custom command callbacks.
- env.add_callback("doNotModifyHeader", 0, [jsonfilepath, templateFilepath](Arguments& args) {
- return "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from " + jsonfilepath +" and Inja template " + templateFilepath + "\n//\n";
- });
-
- env.add_callback("subtract", 2, [](Arguments& args) {
- int minuend = args.at(0)->get<int>();
- int subtrahend = args.at(1)->get<int>();
-
- return minuend - subtrahend;
- });
-
- env.add_callback("setVar", 2, [=](Arguments& args) {
- string key = args.at(0)->get<string>();
- string value = args.at(1)->get<string>();
- set_custom_var(key, value);
- return "";
- });
-
- env.add_callback("setVarInt", 2, [=](Arguments& args) {
- string key = args.at(0)->get<string>();
- string value = to_string(args.at(1)->get<int>());
- set_custom_var(key, value);
- return "";
- });
-
- env.add_callback("getVar", 1, [=](Arguments& args) {
- string key = args.at(0)->get<string>();
- return get_custom_var(key);
- });
-
- env.add_callback("concat", 2, [](Arguments& args) {
- string first = args.at(0)->get<string>();
- string second = args.at(1)->get<string>();
- return first + second;
- });
-
- env.add_callback("removePrefix", 2, [](Arguments& args) {
- string rawValue = args.at(0)->get<string>();
- string prefix = args.at(1)->get<string>();
- string::size_type i = rawValue.find(prefix);
- if (i != 0)
- return rawValue;
-
- return rawValue.erase(0, prefix.length());
- });
-
- env.add_callback("removeSuffix", 2, [](Arguments& args) {
- string rawValue = args.at(0)->get<string>();
- string suffix = args.at(1)->get<string>();
- string::size_type i = rawValue.rfind(suffix);
- if (i == string::npos)
- return rawValue;
-
- return rawValue.substr(0, i);
- });
-
- // single argument is a json object
- env.add_callback("isEmpty", 1, [](Arguments& args) {
- return args.at(0)->empty();
- });
-
- try
- {
- env.write_with_json_file(templateFilepath, jsonfilepath, outputFilepath);
- }
- catch (const std::exception& e)
- {
- FATAL_ERROR("JSONPROC_ERROR: %s\n", e.what());
- }
-
- return 0;
-}
+// jsonproc.cpp + +#include "jsonproc.h" + +#include <map> + +#include <string> +using std::string; using std::to_string; + +#include <inja.hpp> +using namespace inja; +using json = nlohmann::json; + +std::map<string, string> customVars; + +void set_custom_var(string key, string value) +{ + customVars[key] = value; +} + +string get_custom_var(string key) +{ + return customVars[key]; +} + +int main(int argc, char *argv[]) +{ + if (argc != 4) + FATAL_ERROR("USAGE: jsonproc <json-filepath> <template-filepath> <output-filepath>\n"); + + string jsonfilepath = argv[1]; + string templateFilepath = argv[2]; + string outputFilepath = argv[3]; + + Environment env; + + // Add custom command callbacks. + env.add_callback("doNotModifyHeader", 0, [jsonfilepath, templateFilepath](Arguments& args) { + return "//\n// DO NOT MODIFY THIS FILE! It is auto-generated from " + jsonfilepath +" and Inja template " + templateFilepath + "\n//\n"; + }); + + env.add_callback("subtract", 2, [](Arguments& args) { + int minuend = args.at(0)->get<int>(); + int subtrahend = args.at(1)->get<int>(); + + return minuend - subtrahend; + }); + + env.add_callback("setVar", 2, [=](Arguments& args) { + string key = args.at(0)->get<string>(); + string value = args.at(1)->get<string>(); + set_custom_var(key, value); + return ""; + }); + + env.add_callback("setVarInt", 2, [=](Arguments& args) { + string key = args.at(0)->get<string>(); + string value = to_string(args.at(1)->get<int>()); + set_custom_var(key, value); + return ""; + }); + + env.add_callback("getVar", 1, [=](Arguments& args) { + string key = args.at(0)->get<string>(); + return get_custom_var(key); + }); + + env.add_callback("concat", 2, [](Arguments& args) { + string first = args.at(0)->get<string>(); + string second = args.at(1)->get<string>(); + return first + second; + }); + + env.add_callback("removePrefix", 2, [](Arguments& args) { + string rawValue = args.at(0)->get<string>(); + string prefix = args.at(1)->get<string>(); + string::size_type i = rawValue.find(prefix); + if (i != 0) + return rawValue; + + return rawValue.erase(0, prefix.length()); + }); + + env.add_callback("removeSuffix", 2, [](Arguments& args) { + string rawValue = args.at(0)->get<string>(); + string suffix = args.at(1)->get<string>(); + string::size_type i = rawValue.rfind(suffix); + if (i == string::npos) + return rawValue; + + return rawValue.substr(0, i); + }); + + // single argument is a json object + env.add_callback("isEmpty", 1, [](Arguments& args) { + return args.at(0)->empty(); + }); + + try + { + env.write_with_json_file(templateFilepath, jsonfilepath, outputFilepath); + } + catch (const std::exception& e) + { + FATAL_ERROR("JSONPROC_ERROR: %s\n", e.what()); + } + + return 0; +} |