aboutsummaryrefslogtreecommitdiff
path: root/bbot/variable.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'bbot/variable.cxx')
-rw-r--r--bbot/variable.cxx94
1 files changed, 0 insertions, 94 deletions
diff --git a/bbot/variable.cxx b/bbot/variable.cxx
deleted file mode 100644
index a25b007..0000000
--- a/bbot/variable.cxx
+++ /dev/null
@@ -1,94 +0,0 @@
-// file : bbot/variable.cxx -*- C++ -*-
-// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#include <bbot/variable>
-
-#include <utility> // move()
-
-using namespace std;
-
-namespace bbot
-{
- variable::
- variable (string v): string (move (v))
- {
- // Scan the string untill the end to check that the quoting is terminated.
- // We will also make sure that the name doesn't contain spaces and the
- // value is provided.
- //
- char quoting ('\0'); // Current quoting mode, can be used as bool.
- bool name (true); // True while we are parsing the variable name.
-
- auto b (cbegin ());
- auto i (b);
-
- auto bad_variable = [&b, &i] (const string& d)
- {
- throw invalid_variable (i - b, d);
- };
-
- for (auto e (cend ()); i != e; ++i)
- {
- char c (*i);
-
- if (!quoting)
- {
- if (c == '"' || c == '\'') // Begin of quoted string,
- {
- quoting = c;
- continue;
- }
- }
- else if (c == quoting) // End of quoted string,
- {
- quoting = '\0';
- continue;
- }
-
- if (name)
- {
- if (c == ' ' || c == '\t')
- bad_variable ("expected variable assignment");
- else if (c == '=')
- name = false;
- }
- }
-
- if (quoting)
- bad_variable ("unterminated quoted string");
-
- if (name)
- bad_variable ("no variable value");
- }
-
- string variable::
- unquoted () const
- {
- string r;
- char quoting ('\0'); // Current quoting mode, can be used as bool.
-
- for (auto i (cbegin ()), e (cend ()); i != e; ++i)
- {
- char c (*i);
-
- if (!quoting)
- {
- if (c == '"' || c == '\'') // Begin of quoted string.
- {
- quoting = c;
- continue;
- }
- }
- else if (c == quoting) // End of quoted string.
- {
- quoting = '\0';
- continue;
- }
-
- r += c;
- }
-
- return r;
- }
-}