[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kate/script
From: Christoph Cullmann <cullmann () kde ! org>
Date: 2009-10-07 11:49:50
Message-ID: 1254916190.728847.15616.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1032254 by cullmann:
load multiple api files
M +38 -15 katescript.cpp
--- trunk/KDE/kdelibs/kate/script/katescript.cpp #1032253:1032254
@@ -30,6 +30,7 @@
#include <QScriptEngine>
#include <QScriptValue>
#include <QScriptContext>
+#include <QFileInfo>
#include <kdebug.h>
#include <klocale.h>
@@ -174,31 +175,53 @@
bool KateScript::initApi ()
{
- // cache locations
- static QString s_katePartApi;
- static QString s_userApi;
+ // cache file names
+ static QStringList apiFileBaseNames;
+ static QHash<QString, QString> apiBaseName2FileName;
+ static QHash<QString, QString> apiBaseName2Content;
// read katepart javascript api
if (!s_scriptingApiLoaded) {
s_scriptingApiLoaded = true;
- readFile(KStandardDirs::locate("data", "katepart/script/katepartapi.js"), \
s_katePartApi);
- readFile(KStandardDirs::locateLocal("data", "katepart/script/userapi.js"), \
s_userApi); + apiFileBaseNames.clear ();
+ apiBaseName2FileName.clear ();
+ apiBaseName2Content.clear ();
+
+ // get all api files
+ const QStringList list = \
KGlobal::dirs()->findAllResources("data","katepart/api/*.js", \
KStandardDirs::NoDuplicates); +
+ for ( QStringList::ConstIterator it = list.begin(); it != list.end(); ++it )
+ {
+ // get abs filename....
+ QFileInfo fi(*it);
+ const QString absPath = fi.absoluteFilePath();
+ const QString baseName = fi.baseName ();
+
+ // remember filenames
+ apiFileBaseNames.append (baseName);
+ apiBaseName2FileName[baseName] = absPath;
+
+ // read the file
+ QString content;
+ readFile(absPath, content);
+ apiBaseName2Content[baseName] = content;
+ }
+
+ // sort...
+ apiFileBaseNames.sort ();
}
- // register kate part scripting api
- QScriptValue apiObject = m_engine->evaluate(s_katePartApi, "katepartapi.js");
- if (hasException(apiObject, "katepartapi.js")) {
- return false;
- }
-
- // register user javascript api, optional
- if (!s_userApi.isEmpty()) {
- QScriptValue userApiObject = m_engine->evaluate(s_userApi, "userapi.js");
- if (hasException(userApiObject, "userapi.js")) {
+ // register all script apis found
+ for ( QStringList::ConstIterator it = apiFileBaseNames.begin(); it != \
apiFileBaseNames.end(); ++it ) + {
+ // try to load into engine, bail out one error, use fullpath for error messages
+ QScriptValue apiObject = m_engine->evaluate(apiBaseName2Content[*it], \
apiBaseName2FileName[*it]); + if (hasException(apiObject, \
apiBaseName2FileName[*it])) { return false;
}
}
+ // success ;)
return true;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic