From 5e9c1172ca196bdc8bcdc842e54efc5a74908fff Mon Sep 17 00:00:00 2001 From: Aaron Seigo Date: Wed, 23 Dec 2015 20:31:25 +0100 Subject: move Syntax out of SyntraxTree --- akonadi2_cli/repl/replStates.cpp | 2 +- akonadi2_cli/syntax_modules/akonadi_list.cpp | 2 +- akonadi2_cli/syntax_modules/core_syntax.cpp | 14 ++++----- akonadi2_cli/syntaxtree.cpp | 4 +-- akonadi2_cli/syntaxtree.h | 44 +++++++++++++++------------- 5 files changed, 34 insertions(+), 32 deletions(-) (limited to 'akonadi2_cli') diff --git a/akonadi2_cli/repl/replStates.cpp b/akonadi2_cli/repl/replStates.cpp index 0273aa2..0179779 100644 --- a/akonadi2_cli/repl/replStates.cpp +++ b/akonadi2_cli/repl/replStates.cpp @@ -149,7 +149,7 @@ static char **akonadi2_cli_tab_completion(const char *text, int start, int end) static char *akonadi2_cli_next_tab_complete_match(const char *text, int state) { - QVector nearest = SyntaxTree::self()->nearestSyntax(tab_completion_full_state, QString(text)); + SyntaxTree::SyntaxList nearest = SyntaxTree::self()->nearestSyntax(tab_completion_full_state, QString(text)); if (nearest.size() > state) { return qstrdup(nearest[state].keyword.toUtf8()); diff --git a/akonadi2_cli/syntax_modules/akonadi_list.cpp b/akonadi2_cli/syntax_modules/akonadi_list.cpp index 26b1f1e..62824ee 100644 --- a/akonadi2_cli/syntax_modules/akonadi_list.cpp +++ b/akonadi2_cli/syntax_modules/akonadi_list.cpp @@ -42,7 +42,7 @@ namespace AkonadiList SyntaxTree::SyntaxList syntax() { SyntaxTree::SyntaxList syntax; - syntax << SyntaxTree::Syntax("list", QObject::tr("List all resources, or the contents of one or more resources"), &AkonadiList::list, SyntaxTree::Syntax::EventDriven); + syntax << Syntax("list", QObject::tr("List all resources, or the contents of one or more resources"), &AkonadiList::list, Syntax::EventDriven); return syntax; } diff --git a/akonadi2_cli/syntax_modules/core_syntax.cpp b/akonadi2_cli/syntax_modules/core_syntax.cpp index f9cd622..1231e29 100644 --- a/akonadi2_cli/syntax_modules/core_syntax.cpp +++ b/akonadi2_cli/syntax_modules/core_syntax.cpp @@ -30,15 +30,15 @@ namespace CoreSyntax SyntaxTree::SyntaxList syntax() { SyntaxTree::SyntaxList syntax; - syntax << SyntaxTree::Syntax("exit", QObject::tr("Exits the application. Ctrl-d also works!"), &CoreSyntax::exit); - syntax << SyntaxTree::Syntax(QObject::tr("help"), QObject::tr("Print command information: help [command]"), &CoreSyntax::showHelp); + syntax << Syntax("exit", QObject::tr("Exits the application. Ctrl-d also works!"), &CoreSyntax::exit); + syntax << Syntax(QObject::tr("help"), QObject::tr("Print command information: help [command]"), &CoreSyntax::showHelp); - SyntaxTree::Syntax set(QObject::tr("set"), QObject::tr("Sets settings for the session")); - set.children << SyntaxTree::Syntax(QObject::tr("debug"), QObject::tr("Set the debug level from 0 to 6"), &CoreSyntax::setDebugLevel); + Syntax set(QObject::tr("set"), QObject::tr("Sets settings for the session")); + set.children << Syntax(QObject::tr("debug"), QObject::tr("Set the debug level from 0 to 6"), &CoreSyntax::setDebugLevel); syntax << set; - SyntaxTree::Syntax get(QObject::tr("get"), QObject::tr("Gets settings for the session")); - get.children << SyntaxTree::Syntax(QObject::tr("debug"), QObject::tr("Set the debug level from 0 to 6"), &CoreSyntax::printDebugLevel); + Syntax get(QObject::tr("get"), QObject::tr("Gets settings for the session")); + get.children << Syntax(QObject::tr("debug"), QObject::tr("Set the debug level from 0 to 6"), &CoreSyntax::printDebugLevel); syntax << get; return syntax; @@ -65,7 +65,7 @@ bool showHelp(const QStringList &commands, State &state) for (auto keyword: sorted) { state.printLine(keyword, 1); } - } else if (const SyntaxTree::Syntax *syntax = command.first) { + } else if (const Syntax *syntax = command.first) { //TODO: get parent! state.print(QObject::tr("Command `%1`").arg(syntax->keyword)); diff --git a/akonadi2_cli/syntaxtree.cpp b/akonadi2_cli/syntaxtree.cpp index 5dd4c54..a4f5d40 100644 --- a/akonadi2_cli/syntaxtree.cpp +++ b/akonadi2_cli/syntaxtree.cpp @@ -29,11 +29,11 @@ SyntaxTree *SyntaxTree::s_module = 0; -SyntaxTree::Syntax::Syntax() +Syntax::Syntax() { } -SyntaxTree::Syntax::Syntax(const QString &k, const QString &helpText, std::function l, Interactivity inter) +Syntax::Syntax(const QString &k, const QString &helpText, std::function l, Interactivity inter) : keyword(k), help(helpText), interactivity(inter), diff --git a/akonadi2_cli/syntaxtree.h b/akonadi2_cli/syntaxtree.h index 54b867f..7282955 100644 --- a/akonadi2_cli/syntaxtree.h +++ b/akonadi2_cli/syntaxtree.h @@ -24,32 +24,34 @@ #include #include -class SyntaxTree +class Syntax { public: - struct Syntax - { - enum Interactivity { - NotInteractive = 0, - EventDriven - }; - - Syntax(); - Syntax(const QString &keyword, - const QString &helpText = QString(), - std::function lambda = std::function(), - Interactivity interactivity = NotInteractive); - - QString keyword; - QString help; - Interactivity interactivity; - std::function lambda; - - QVector children; + enum Interactivity { + NotInteractive = 0, + EventDriven }; + Syntax(); + Syntax(const QString &keyword, + const QString &helpText = QString(), + std::function lambda = std::function(), + Interactivity interactivity = NotInteractive); + + QString keyword; + QString help; + Interactivity interactivity; + std::function lambda; + + QVector children; +}; + +class SyntaxTree +{ +public: + typedef std::pair Command; - typedef QVector SyntaxList; + typedef QVector SyntaxList; static SyntaxTree *self(); -- cgit v1.2.3