mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-09-06 08:27:25 +02:00
add initial bulk run from pre-commit over all files
This commit is contained in:
parent
665aeeef61
commit
93356b39c3
418 changed files with 21354 additions and 23858 deletions
161
src/Lexer.h
161
src/Lexer.h
|
@ -27,95 +27,108 @@
|
|||
#ifndef INCLUDED_LEXER
|
||||
#define INCLUDED_LEXER
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
#include <cstddef>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
// Lexer: A UTF8 lexical analyzer for every construct used on the Taskwarrior
|
||||
// command line, with additional recognized types for disambiguation.
|
||||
|
||||
class Lexer
|
||||
{
|
||||
public:
|
||||
class Lexer {
|
||||
public:
|
||||
// These are overridable.
|
||||
static std::string dateFormat;
|
||||
static std::string::size_type minimumMatchLength;
|
||||
static std::map <std::string, std::string> attributes;
|
||||
static std::map<std::string, std::string> attributes;
|
||||
|
||||
enum class Type { uuid, number, hex,
|
||||
string,
|
||||
url, pair, set, separator,
|
||||
tag,
|
||||
path,
|
||||
substitution, pattern,
|
||||
op,
|
||||
dom, identifier, word,
|
||||
date, duration };
|
||||
enum class Type {
|
||||
uuid,
|
||||
number,
|
||||
hex,
|
||||
string,
|
||||
url,
|
||||
pair,
|
||||
set,
|
||||
separator,
|
||||
tag,
|
||||
path,
|
||||
substitution,
|
||||
pattern,
|
||||
op,
|
||||
dom,
|
||||
identifier,
|
||||
word,
|
||||
date,
|
||||
duration
|
||||
};
|
||||
|
||||
Lexer (const std::string&);
|
||||
~Lexer () = default;
|
||||
bool token (std::string&, Lexer::Type&);
|
||||
static std::vector <std::string> split (const std::string&);
|
||||
static std::string typeToString (Lexer::Type);
|
||||
Lexer(const std::string&);
|
||||
~Lexer() = default;
|
||||
bool token(std::string&, Lexer::Type&);
|
||||
static std::vector<std::string> split(const std::string&);
|
||||
static std::string typeToString(Lexer::Type);
|
||||
|
||||
// Static helpers.
|
||||
static const std::string typeName (const Lexer::Type&);
|
||||
static bool isIdentifierStart (int);
|
||||
static bool isIdentifierNext (int);
|
||||
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 isAllDigits (const std::string&);
|
||||
static bool isDOM (const std::string&);
|
||||
static void dequote (std::string&, const std::string& quotes = "'\"");
|
||||
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 bool decomposePair (const std::string&, std::string&, std::string&, std::string&, std::string&);
|
||||
static bool decomposeSubstitution (const std::string&, std::string&, std::string&, std::string&);
|
||||
static bool decomposePattern (const std::string&, std::string&, std::string&);
|
||||
static int hexToInt (int);
|
||||
static int hexToInt (int, int);
|
||||
static int hexToInt (int, int, int, int);
|
||||
static std::string::size_type commonLength (const std::string&, const std::string&);
|
||||
static std::string::size_type commonLength (const std::string&, std::string::size_type, const std::string&, std::string::size_type);
|
||||
static std::string commify (const std::string&);
|
||||
static std::string lowerCase (const std::string&);
|
||||
static std::string ucFirst (const std::string&);
|
||||
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 const std::string typeName(const Lexer::Type&);
|
||||
static bool isIdentifierStart(int);
|
||||
static bool isIdentifierNext(int);
|
||||
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 isAllDigits(const std::string&);
|
||||
static bool isDOM(const std::string&);
|
||||
static void dequote(std::string&, const std::string& quotes = "'\"");
|
||||
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 bool decomposePair(const std::string&, std::string&, std::string&, std::string&,
|
||||
std::string&);
|
||||
static bool decomposeSubstitution(const std::string&, std::string&, std::string&, std::string&);
|
||||
static bool decomposePattern(const std::string&, std::string&, std::string&);
|
||||
static int hexToInt(int);
|
||||
static int hexToInt(int, int);
|
||||
static int hexToInt(int, int, int, int);
|
||||
static std::string::size_type commonLength(const std::string&, const std::string&);
|
||||
static std::string::size_type commonLength(const std::string&, std::string::size_type,
|
||||
const std::string&, std::string::size_type);
|
||||
static std::string commify(const std::string&);
|
||||
static std::string lowerCase(const std::string&);
|
||||
static std::string ucFirst(const std::string&);
|
||||
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 = " ");
|
||||
|
||||
// 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 isSeparator (std::string&, Lexer::Type&);
|
||||
bool isURL (std::string&, Lexer::Type&);
|
||||
bool isPair (std::string&, Lexer::Type&);
|
||||
bool isSet (std::string&, Lexer::Type&);
|
||||
bool isTag (std::string&, Lexer::Type&);
|
||||
bool isPath (std::string&, Lexer::Type&);
|
||||
bool isSubstitution (std::string&, Lexer::Type&);
|
||||
bool isPattern (std::string&, Lexer::Type&);
|
||||
bool isOperator (std::string&, Lexer::Type&);
|
||||
bool isDOM (std::string&, Lexer::Type&);
|
||||
bool isIdentifier (std::string&, Lexer::Type&);
|
||||
bool isWord (std::string&, Lexer::Type&);
|
||||
bool isLiteral (const std::string&, bool, bool);
|
||||
bool isOneOf (const std::vector <std::string>&, bool, bool);
|
||||
bool isOneOf (const std::map <std::string, std::string>&, bool, bool);
|
||||
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 isSeparator(std::string&, Lexer::Type&);
|
||||
bool isURL(std::string&, Lexer::Type&);
|
||||
bool isPair(std::string&, Lexer::Type&);
|
||||
bool isSet(std::string&, Lexer::Type&);
|
||||
bool isTag(std::string&, Lexer::Type&);
|
||||
bool isPath(std::string&, Lexer::Type&);
|
||||
bool isSubstitution(std::string&, Lexer::Type&);
|
||||
bool isPattern(std::string&, Lexer::Type&);
|
||||
bool isOperator(std::string&, Lexer::Type&);
|
||||
bool isDOM(std::string&, Lexer::Type&);
|
||||
bool isIdentifier(std::string&, Lexer::Type&);
|
||||
bool isWord(std::string&, Lexer::Type&);
|
||||
bool isLiteral(const std::string&, bool, bool);
|
||||
bool isOneOf(const std::vector<std::string>&, bool, bool);
|
||||
bool isOneOf(const std::map<std::string, std::string>&, bool, bool);
|
||||
|
||||
private:
|
||||
private:
|
||||
std::string _text;
|
||||
std::size_t _cursor;
|
||||
std::size_t _eos;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue