Add functions to read dirs/files from the JavaScript
This commit is contained in:
parent
9aca90538d
commit
24b397b930
|
@ -19,6 +19,7 @@
|
|||
#include <qtutilities/misc/compat.h>
|
||||
|
||||
#include <QCoreApplication>
|
||||
#include <QDir>
|
||||
#include <QHash>
|
||||
#include <QJSEngine>
|
||||
#include <QJSValueIterator>
|
||||
|
@ -49,6 +50,7 @@ constexpr auto nativeUtf16Encoding = TagParser::TagTextEncoding::
|
|||
|
||||
UtilityObject::UtilityObject(QJSEngine *engine)
|
||||
: QObject(engine)
|
||||
, m_engine(engine)
|
||||
, m_context(nullptr)
|
||||
, m_diag(nullptr)
|
||||
{
|
||||
|
@ -88,9 +90,30 @@ void UtilityObject::exit(int retcode)
|
|||
QCoreApplication::exit(retcode);
|
||||
}
|
||||
|
||||
QString UtilityObject::readEnvironmentVariable(const QString &variable, const QString &defaultValue) const
|
||||
QJSValue UtilityObject::readEnvironmentVariable(const QString &variable, const QJSValue &defaultValue) const
|
||||
{
|
||||
return qEnvironmentVariable(variable.toUtf8().data(), defaultValue);
|
||||
const auto variableUtf8 = variable.toUtf8();
|
||||
if (qEnvironmentVariableIsSet(variableUtf8.data())) {
|
||||
return QJSValue(qEnvironmentVariable(variableUtf8.data()));
|
||||
} else {
|
||||
return QJSValue(defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
QJSValue UtilityObject::readDirectory(const QString &path)
|
||||
{
|
||||
auto dir = QDir(path);
|
||||
return dir.exists() ? m_engine->toScriptValue(dir.entryList(QDir::NoDotAndDotDot, QDir::Name)) : QJSValue();
|
||||
}
|
||||
|
||||
QJSValue UtilityObject::readFile(const QString &path)
|
||||
{
|
||||
if (auto file = QFile(path); file.open(QFile::ReadOnly)) {
|
||||
if (auto data = file.readAll(); file.error() != QFile::NoError) {
|
||||
return m_engine->toScriptValue(std::move(data));
|
||||
}
|
||||
}
|
||||
return QJSValue();
|
||||
}
|
||||
|
||||
QString UtilityObject::formatName(const QString &str) const
|
||||
|
|
|
@ -43,13 +43,19 @@ public:
|
|||
public Q_SLOTS:
|
||||
void log(const QString &message);
|
||||
void diag(const QString &level, const QString &message, const QString &context = QString());
|
||||
|
||||
int exec();
|
||||
void exit(int retcode);
|
||||
QString readEnvironmentVariable(const QString &variable, const QString &defaultValue = QString()) const;
|
||||
|
||||
QJSValue readEnvironmentVariable(const QString &variable, const QJSValue &defaultValue = QJSValue()) const;
|
||||
QJSValue readDirectory(const QString &path);
|
||||
QJSValue readFile(const QString &path);
|
||||
|
||||
QString formatName(const QString &str) const;
|
||||
QString fixUmlauts(const QString &str) const;
|
||||
|
||||
private:
|
||||
QJSEngine *m_engine;
|
||||
const std::string *m_context;
|
||||
TagParser::Diagnostics *m_diag;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue