動的シンタックスハイライト


動的なシンタックスハイライトとは、ユーザーが変更できるコードをハイライトする仕組みです。 これが行われる場所は1か所だけ、オンラインエディターです。

Note

コードスニペットやイテレーションなどは、ユーザーがその場でコードを変更できないため_静的_です。 静的シンタックスハイライトをどのように扱っているのか詳しく知りたい場合は、静的シンタックスハイライトのドキュメントをご覧ください。

実装

動的なシンタックスハイライトは、CodeMirrorライブラリを使って実現します。

自分の言語のサポートを追加するときには、3つの選択肢があります。

  1. CodeMirrorがその言語を_標準で_サポートしている(つまり、サポートされている言語に載っている)。 その場合は、言語を有効にするセクションに進んでください。
  2. 既存のCodeMirrorプラグインを通じてサポートされている。 その場合は、既存のプラグインを使うセクションに進んでください。
  3. その言語がサポートされて_いない_。 この場合は3つの選択肢があります。
    1. 新しいプラグインを作成するセクションで説明するように、CodeMirrorプラグインを一から書く。
    2. 自分の言語の構文が別の言語の構文に(よく)似ている(たとえば、Unisonの構文はHaskellに似ています)。その場合は、その言語のシンタックスハイライトを自分の言語に使うことも検討できます。 詳しくは言語を有効にするセクションをご覧ください。
    3. 動的なシンタックスハイライトを導入しない。

言語を有効にする

自分の言語に対するCodeMirrorのサポートを有効にするには、フォーラムでトピックを立ててください。 そうすると、Exercismが、ウェブサイトでその言語のCodeMirrorサポートを有効にするプルリクエストを作成します。

既存のプラグインを使う

既存のプラグインを使うには、そのプラグインがNPMに公開されている必要があります。

プラグインがNPMに公開されていない場合は、次のいずれかを行います。

  1. プラグインの作者に、NPMで公開する意思があるか尋ねる。
  2. リポジトリをフォークして、自分で公開する。
  3. Exercismにリポジトリをフォークしてもらい、公開まで任せる。 そうするには、フォーラムでトピックを立てて依頼してください。
Note

CodeMirrorのウェブサイトには、コミュニティが作成した言語プラグインの一覧があります。

次のステップは、言語を有効にすることです。

新しいプラグインを作成する

始めるための手順は次のとおりです。

  1. 既存のcodemirror-lang-...がリポジトリ一覧にないかどうかを確認して、まだ存在しないことを確かめます。
  2. Exercismフォーラムで新しいトピックを立て、どの言語のCodeMirrorプラグインを作りたいのかを伝えます。
  3. CodeMirrorプラグインのリポジトリが用意されたら、自分のトラックの文法を実装します。
Note

始めやすくするために、用意されたリポジトリには、土台として使ったり調整したりできる最小限のサンプル文法が含まれています。

Exercismのコミュニティはとても友好的で協力的なので、この作業を進める中で喜んで力になってくれます! もし行き詰まったら、Exercismフォーラムで新しいトピックを立てるか、必要に応じてexercism/exercismで新しいイシューを作成してください🙂

その後、プラグインをNPMに公開する必要があります。 次のステップは、言語を有効にすることです。

別の言語を使う

自分の言語の構文が別の言語の構文に(よく)似ている場合は、その言語のシンタックスハイライトを自分の言語に使うことも検討できます。 そうするには、その別の言語のCodeMirrorプラグインを使ってトラックを設定します。 詳しくは言語を有効にするセクションをご覧ください。