Prismはコード内のトークンを識別し、CSSによってスタイルが適用されて構文ハイライトが生成されます。このページでは、標準トークンと対応する例の概要を示します。
新しい言語を定義する際には、キーワードや演算子など、コードの各「タイプ」のトークン名を指定する必要があります。これにより、Prismのテーマが適切に色(およびその他のスタイル)を割り当てることができます。Prismのテーマ(公式と非公式の両方)は、これらの標準トークンのみの対応を保証しているため、コードを確実にハイライト表示するには、以下の標準トークンを使用することをお勧めします。
汎用 | |
---|---|
keyword |
プリ定義および予約語。
|
builtin |
すぐに使用できる関数/メソッド/クラス/型。
|
class-name |
クラス、インターフェース、トレイト、または型の名前。
|
function |
関数またはメソッドの名前。
|
boolean |
真と偽、および同様の概念のペア(例:yesとno)。
|
number |
数値。基数や順序、実数か虚数かに関係なく。
|
string |
リテラルテキスト。数字、記号、さらに特別な文字を含む場合があります。
|
char |
1文字のみで構成できる文字列。言語によって強制されます。
|
symbol |
一部の言語に見られるプリミティブなデータ型。識別子と考えることができます。
|
regex |
正規表現。
|
url |
別のページまたはリソースへのリンク。
|
operator |
アクションまたはプロセスを表す記号。算術演算、論理演算など。
|
variable |
変数の名前。このトークンは控えめに使用する必要があります。一般的には、命令型および手続き型プログラミング言語(例:C、JavaScript、Python)の一般的な変数ではなく、特殊な変数(例:LessまたはBash)で使用されます。
|
constant |
定数の名前。
|
property |
属性/特性またはオブジェクト/マップキー。
|
punctuation |
句読点(ブラケット、括弧、コンマなど)。
|
important |
重要で特別な強調表示が必要なもの。
|
comment |
コードコメント。
|
マークアップ言語 | |
tag |
マークアップタグ(例:HTMLおよびXMLタグ)。
|
attr-name 、attr-value |
マークアップタグの属性とその値/引数のようなものです。
|
namespace |
XML文書で一意に名前付けられた要素と属性を提供するために使用されます。マークアップ言語以外では、識別子のパッケージ/名前空間部分をトークン化するために使用されます。
|
prolog |
XML文書の最初の部分。
|
doctype |
文書型宣言。マークアップ言語に固有です。
|
cdata |
文字データ。マークアップ言語に固有です。
|
entity |
マークアップ言語で予約文字を表示するために使用されるコード。
|
ドキュメントマークアップ言語 | |
bold |
太字テキスト。主にドキュメントマークアップ言語に見られます。
|
italic |
斜体テキスト。主にドキュメントマークアップ言語に見られます。
|
スタイルシート | |
atrule |
文字通りスタイルシートの@ ルール(ステートメント)。
|
selector |
スタイルシートなど、操作対象のグループから何かを識別または選択するコード(例:スタイルシートでのHTML要素の名前)。
|
差分 | |
inserted 、deleted |
それぞれ追加または変更された行と削除された行。主に差分用。一般的には、何かが増加および減少/削除されたという概念です。
|
上記の標準トークンに加えて、Prismには、HTML内のCSS、HTML内のJS、シェルセッション内のBash、JS内のCSSなど、別の言語に埋め込まれた言語(例:HTML内のCSS)のトークンもあります。これにより、Prismのテーマは埋め込み言語のトークンをより正確にハイライト表示できます。すべての埋め込み言語は独自の特別なトークンで囲まれており、埋め込み言語に対応するCSSクラスlanguage-xxxx
が含まれています。
ブラウザの開発者ツールを開き、以下の例を確認して動作を確認してください!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>I can haz embedded CSS and JS</title>
<style>
@media print {
p { color: red !important; }
}
</style>
</head>
<body>
<h1>I can haz embedded CSS and JS</h1>
<script>
if (true) {
console.log('foo');
}
</script>
</body>
</html>
場合によっては、言語で特定のコードの部分を参照するために特定の名前を使用する場合がありますが、それはPrismの標準トークン名(例:function-definition
)ではありません。function-definition
は標準トークンではないため、意味的に類似しており、Prismのテーマがハイライト表示することを保証する標準トークン(例:function
)にエイリアスを付けることができます。例を以下に示します。
fn main() {
println!("Hello World");
another_function();
}