added new help functions

This commit is contained in:
Andrei Yankovich 2020-02-18 22:28:17 +03:00
parent 72d461bac8
commit 5a971a5b21
5 changed files with 114 additions and 12 deletions

View File

@ -33,6 +33,7 @@ CONFIG(release, debug|release): {
}
SOURCES += \
helpdata.cpp \
quasarapp.cpp \
params.cpp \
locales.cpp \
@ -40,6 +41,7 @@ SOURCES += \
global.cpp
HEADERS += \
helpdata.h \
quasarapp.h \
quasarapp_global.h \
params.h \

44
helpdata.cpp Normal file
View File

@ -0,0 +1,44 @@
#include "helpdata.h"
#include <iostream>
int MAX_LENGTH = 80;
void QuasarAppUtils::Help::print(const QuasarAppUtils::Help::Options &charter) {
for (auto line = charter.begin(); line != charter.end(); ++line) {
print(line.key(), line.value());
}
}
void QuasarAppUtils::Help::print(const QuasarAppUtils::Help::Charters &help) {
for (auto line = help.begin(); line != help.end(); ++line) {
std::string expander('-', MAX_LENGTH);
std::cout << line.key().toStdString()<< std::endl;
std::cout << expander << std::endl;
print(line.value());
std::cout << expander << std::endl;
}
}
void QuasarAppUtils::Help::print(const QString &key, const QString &value) {
int keyLength = key.size() + 2;
std::cout << key.toStdString() << ": ";
std::string expander(' ', keyLength);
auto words = value.split(" ");
int currentLength = keyLength;
for (const auto& word : words) {
if (currentLength < MAX_LENGTH) {
std::cout << word.toStdString();
currentLength += 2 + word.size();
} else {
std::cout << std::endl << expander << ": ";
currentLength = keyLength;
}
}
}
void QuasarAppUtils::Help::setLineLength(int newLength) {
MAX_LENGTH = newLength;
}

38
helpdata.h Normal file
View File

@ -0,0 +1,38 @@
#ifndef HELPDATA_H
#define HELPDATA_H
#include <QHash>
namespace QuasarAppUtils{
namespace Help {
typedef QHash<QString, QString> Options;
typedef QHash<QString, Options> Charters;
/**
* @brief print - line of help
* @param key - option name
* @param value - description of option
*/
void print(const QString& key, const QString& value);
/**
* @brief print = help Charter
* @param charter - charter of help
*/
void print(const Options& charter);
/**
* @brief print - all help
* @param help - help for printing
*/
void print(const Charters& help);
/**
* @brief setLineLength - sets new length of helps line
* @param newLength - new size
*/
void setLineLength(int newLength);
}
}
#endif // HELPDATA_H

View File

@ -63,16 +63,15 @@ void Params::verboseLog(const QString &log, VerboseLvl vLvl) {
}
}
QStringList Params::getparamsHelp() {
return
{
{""},
{ " -verbose (level 1 - 3) : Shows debug log"},
{ " -fileLog (path to file) : Sets path of log file"},
{ " : Default it is path to executable file"},
{ " : with suffix '.log' "},
{ " noWriteInFileLog : Disables loging into file"},
{ ""}
Help::Charters Params::getparamsHelp() {
return {
{
"Base Options", {
{"-verbose (level 1 - 3)", "Shows debug log"},
{"-fileLog (path to file)", "Sets path of log file. Default it is path to executable file with suffix '.log'"},
{"noWriteInFileLog", "Disables loging into file"}
}
}
};
}
@ -82,6 +81,14 @@ void Params::showHelp(const QStringList &help) {
}
}
void Params::showHelp(const Help::Charters &help) {
Help::print(help);
}
void Params::showHelp() {
Help::print(getparamsHelp());
}
int Params::size() {
return params.size();
}

View File

@ -10,7 +10,7 @@
#include <QVariant>
#include "quasarapp_global.h"
#include "helpdata.h"
namespace QuasarAppUtils {
@ -96,7 +96,7 @@ public:
* @brief getparamsHelp
* @return help string of default params
*/
static QStringList getparamsHelp();
static Help::Charters getparamsHelp();
/**
* @brief showHelp - show all strings of help
@ -104,6 +104,12 @@ public:
*/
static void showHelp(const QStringList& help);
/**
* @brief showHelp - show structe of help value
* @param help
*/
static void showHelp(const Help::Charters& help);
/**
* @brief size
* @return size of all params array
@ -115,6 +121,11 @@ public:
* @return size of params entered in conosole
*/
static int customParamasSize();
/**
* @brief showHelp - show base help section of QuasarAppLib
*/
static void showHelp();
};
}