summaryrefslogtreecommitdiff
path: root/hscript/key.cc
diff options
context:
space:
mode:
Diffstat (limited to 'hscript/key.cc')
-rw-r--r--hscript/key.cc33
1 files changed, 33 insertions, 0 deletions
diff --git a/hscript/key.cc b/hscript/key.cc
new file mode 100644
index 0000000..74406f6
--- /dev/null
+++ b/hscript/key.cc
@@ -0,0 +1,33 @@
+/*
+ * key.cc - Implementation of common routines for the base Key classes
+ * libhscript, the HorizonScript library for
+ * Project Horizon
+ *
+ * Copyright (c) 2019 Adélie Linux and contributors. All rights reserved.
+ * This code is licensed under the AGPL 3.0 license, as noted in the
+ * LICENSE-code file in the root directory of this repository.
+ *
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+#include <algorithm>
+#include "key.hh"
+
+bool Horizon::Keys::BooleanKey::parse(const std::string what, bool *out) {
+ std::string lower;
+ std::transform(what.begin(), what.end(), lower.begin(), ::tolower);
+
+ if(lower == "true" || lower == "yes" || lower == "1") {
+ *out = true;
+ } else if(lower == "false" || lower == "no" || lower == "0") {
+ *out = false;
+ } else {
+ return false;
+ }
+ return true;
+}
+
+bool Horizon::Keys::BooleanKey::validate() {
+ /* Key will fail init if it is not valid, so this is always a no-op. */
+ return true;
+}