2017-04-10 3 views
0

WebベースのJSエディタの自動募集機能を実装しています。ユーザーが入力している間、私は彼自身がすでに宣言または使用しているすべての変数、関数、クラスの提案を表示したい。私は変数と関数をwindowから得ることができますが、私は宣言されたクラスのリストを得ることができません。今まで入力した次のコードであるとしましょう:クラスを宣言した後Javascript - 宣言されたすべてのクラスをJavaScriptのファイルにリストする方法

class FooClass { 
 
    constructor() { 
 
    console.log("I am the constructor of ECMA6 class"); 
 
    } 
 
};

をユーザーがfooを入力した場合、私は彼にFooClassとしての提案を示したいと思います。

+1

ので、手動でその鋸テキストを解析していますユーザーは入力しましたか? – Cerbrus

+0

@Cerbrus、ユーザがCtrl-Spaceを押すたびに、私は現在ウィンドウオブジェクトを調査しており、それに応じて結果を返しています。私はまた、ワーカースレッドの自己オブジェクトの提案を調べています。したがって、ワーカースレッドからクラスをフェッチするには、宣言されたクラスのリストが必要です。 – user3474480

+0

_ "ウィンドウオブジェクトを調査中" _?どういう意味ですか?ユーザーが入力したコードを自動的に実行していますか? – Cerbrus

答えて

0

ほとんどのIDEは、ASTを使用して、オートコンプリートやその他のインテリジェントなリファクタや欠陥検出を実行します。

最もよく知られているJavascript ASTツールの1つはEsprimaで、Javascriptの解析とともにJS(ブラウザとノードの両方)でも実行されます。 多くの時間、ドン」 http://esprima.org/demo/autocomplete.html

あなたは、WebベースのJSエディタを作成する場合は、このツールはあなたに保存する可能性があります。ここでは

は、それはそれは、オートコンプリートのために使用することができる方法を提供してデモですホイールを再発明しないでください。 CodeMirrorの文脈では

あなたは、これが役に立つかもしれません:+ esprimaパワードHTML5 https://github.com/maxogden/javascript-editor

codemirrorはJavaScriptエディタコンポーネント

+0

esprimaはファイルのキーワードを解析するだけです。提案を表示する前に有効性チェックを行っていません。 maxogdenはECMA6をサポートしていません。無効なキーワードとして 'class'を指定しています。 – user3474480

+0

http://esprima.org/demo/validate.html - また、maxogdenはECMA6をサポートしていないかもしれませんが、esprimaはそのホームページ上の最初の箇条書きです - 私はそれがすぐに使えると言っているわけではありません解決策を見つけることができますが、信頼性の高い方法でこれを再現しようとするよりもずっと簡単です。 – mikeapr4

関連する問題