Ext.define が javascript クラスを定義する次の形式に従う小さな JavaScript ファイルが何百もあります。Java アプリでこれらのファイルを解析し、「SOMECLASSNAME」と、「extend」や「requires」などのさまざまなプロパティの値を取得できる必要があります。コメントを無視したいのですが、機能は気にしません。
私は実際に正規表現を使用してこれをすでに実装しており、機能します。ただし、かなり脆いです。' の代わりに " を使用するファイルや、正規表現を壊す不都合に配置されたコメントなどの問題には既に対処しました。
「java javascript ast parser」などのさまざまな検索を使用して検索しましたが、私がやろうとしていることは何もないようです。私が見つけた最も近いのは、JavaでScriptEngineを使用することです。関数リストを抽出するにはどうすればよいですか? ただし、それにはスクリプトが実行可能である必要があり、これらの各ファイルは単独では実行できないようです。
Ext.define('SOMECLASSNAME', {
extend: 'JSCommon.remoting.RESTService',
alternateClassName: 'AccountSettingService',
requires: [
'JSCommon.security.Privilege',
'JSCommon.security.PrivilegeConstants',
'JSCommon.security.store.UIPrivilege',
'JSCommon.util.StringUtil'
],
statics: {
/**
* Creates and returns a new instance of the ReportsService
*/
getNewInstance: function() {
return Ext.create('JSCommon.acctSetting.AccountSettingService');
}
},
config: {
customer: 'abc',
service: 'companySetting'
},
constructor: function(config) {
this.initConfig(config);
return this;
},
getCompanyID: function() {
return PlatformCache.getCompanyContextByAttribute('id');
},
getAccountSetting: function(onResult, onFault) {
var me = this;
var svc = RESTService.getNewInstance();
var ops = Ext.create('JSCommon.remoting.URLElements');
var params = Ext.create('JSCommon.remoting.URLParams');
params.add('action', 'find');
var postbody = {
};
svc.sendGETRequest(svc.getURL(this.getCustomer(), me.getCompanyID(), me.getService(), ops, params), postbody, onResult, onFault);
}
});