]> git.armaanb.net Git - gen-shell.git/blobdiff - src/libshared/src/Lexer.h
removed libshared dependency
[gen-shell.git] / src / libshared / src / Lexer.h
diff --git a/src/libshared/src/Lexer.h b/src/libshared/src/Lexer.h
deleted file mode 100644 (file)
index 03b5166..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Copyright 2013 - 2017, Paul Beckingham, Federico Hernandez.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included
-// in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-//
-// http://www.opensource.org/licenses/mit-license.php
-//
-////////////////////////////////////////////////////////////////////////////////
-
-#ifndef INCLUDED_LEXER
-#define INCLUDED_LEXER
-
-#include <string>
-#include <map>
-#include <vector>
-#include <tuple>
-#include <cstddef>
-
-class Lexer
-{
-public:
-  // These are overridable.
-  static std::string dateFormat;
-
-  enum class Type { uuid, number, hex,
-                    string,
-                    url,
-                    path,
-                    pattern,
-                    op,
-                    word,
-                    date, duration };
-
-  explicit Lexer (const std::string&);
-  bool token (std::string&, Lexer::Type&);
-  static std::string typeToString (Lexer::Type);
-
-  // Static helpers.
-  static std::vector <std::tuple <std::string, Lexer::Type>> tokenize (const std::string&);
-  static const std::string typeName          (const Lexer::Type&);
-  static bool isSingleCharOperator           (int);
-  static bool isDoubleCharOperator           (int, int, int);
-  static bool isTripleCharOperator           (int, int, int, int);
-  static bool isBoundary                     (int, int);
-  static bool isHardBoundary                 (int, int);
-  static bool isPunctuation                  (int);
-  static bool wasQuoted                      (const std::string&);
-  static bool readWord                       (const std::string&, const std::string&, std::string::size_type&, std::string&);
-  static bool readWord                       (const std::string&, std::string::size_type&, std::string&);
-  static int hexToInt                        (int);
-  static int hexToInt                        (int, int);
-  static int hexToInt                        (int, int, int, int);
-  static std::string trimLeft                (const std::string& in, const std::string& t = " ");
-  static std::string trimRight               (const std::string& in, const std::string& t = " ");
-  static std::string trim                    (const std::string& in, const std::string& t = " ");
-  static std::string dequote                 (const std::string&, const std::string& quotes = "'\"");
-
-  // Stream Classifiers.
-  bool isEOS          () const;
-  bool isString       (std::string&, Lexer::Type&, const std::string&);
-  bool isDate         (std::string&, Lexer::Type&);
-  bool isDuration     (std::string&, Lexer::Type&);
-  bool isUUID         (std::string&, Lexer::Type&, bool);
-  bool isNumber       (std::string&, Lexer::Type&);
-  bool isInteger      (std::string&, Lexer::Type&);
-  bool isHexNumber    (std::string&, Lexer::Type&);
-  bool isURL          (std::string&, Lexer::Type&);
-  bool isPath         (std::string&, Lexer::Type&);
-  bool isPattern      (std::string&, Lexer::Type&);
-  bool isOperator     (std::string&, Lexer::Type&);
-  bool isWord         (std::string&, Lexer::Type&);
-
-  // Disabling features.
-  void noString ()    { _enableString    = false; }
-  void noDate ()      { _enableDate      = false; }
-  void noDuration ()  { _enableDuration  = false; }
-  void noUUID ()      { _enableUUID      = false; }
-  void noHexNumber () { _enableHexNumber = false; }
-  void noWord ()      { _enableWord      = false; }
-  void noURL ()       { _enableURL       = false; }
-  void noPath ()      { _enablePath      = false; }
-  void noPattern ()   { _enablePattern   = false; }
-  void noOperator ()  { _enableOperator  = false; }
-
-private:
-  std::string _text          {};
-  std::size_t _cursor        {0};
-  std::size_t _eos           {0};
-
-  bool        _enableString    {true};
-  bool        _enableDate      {true};
-  bool        _enableDuration  {true};
-  bool        _enableUUID      {true};
-  bool        _enableHexNumber {true};
-  bool        _enableWord      {true};
-  bool        _enableURL       {true};
-  bool        _enablePath      {true};
-  bool        _enablePattern   {true};
-  bool        _enableOperator  {true};
-};
-
-#endif