2016-10-08 11 views
0

kotlinは以下のdslの構築に役立ちますか?このDSLでコンテンツアシスト付きkotlinを使用する動的dsl

test 'test_01' { 
    description " test that a user by name tom is present 
    author : xyz 
    GET /userstore/users/user(name=tom) { 
    verify(/first-name == 'Tom') 
    } 
} 

、以下は、静的部品

テスト、説明、作成者、GET、

を確認しかし、発現

/USERSTORE /ありますユーザー/ユーザー(名前= tom)

は動的にサポートされます。つまり、アプリケーションは '/'で区切られた構文でナビゲート可能なさまざまなドメインモデルを知っています。 IDE(Intellij)は、私がそれを呼び出すときに私にコンテンツアシストを与えるべきです。私は '/' と起動CAを入力した場合たとえば、後にGET、それは私に次のオプション

  1. USERSTORE
  2. 書店
  3. 建物 を与えるべきであるなど

事実であり、私は開発時にこれらのエントリを知らない。これらのエントリを返すことができるコードを書くことができます。私はコードを呼び出すためにエディタが必要で、コンテンツアシスト候補を取得します。

そして、式が無効なトークンで構成されている場合は、エラーにフラグを立てる必要があります。だから、私は自分のコードをチェックして、エディタにエラーがあると返された候補リストにトークンが見つからない場合、エディタが必要です。

答えて

4

まず、あなたの例の構文は有効なKotlinではありません。したがって、あなたはKotlin DSLとして構築できません。パスが文字列リテラルに格納されるように構文を変更できる場合、これは有効なKotlinになります。

第2に、IntelliJ IDEA用のプラグインを構築することができます。このプラグインは、Java、Kotlinなどのあらゆる言語のコンテンツアシストとオンザフライ検証を提供します。このようなプラグインを構築するのに必要な労力は、サポートしている言語にあまり依存しません。そのようなプラグインを作成することはKotlinを使用しても簡単にはなりません。

+0

ありがとうございます。あなたの答えは私をさらに助けました。 – user19937

+0

それでは、ヒントとして、構文をホスト言語(kotlin/Groovy)に合わせて調整し、シンタックスのビット(例:パス式)のみを対象にエディタのコンテンツアシスタントを拡張します。 – user19937

+0

はい、そうすることができます。 – yole

関連する問題