2

GoogleのPrettifyのための独自のルールを作成する最先端の方法は何ですか?GoogleのPrettifyのための独自のルールを作成する最先端の方法は何ですか?

私はさらに、私は新しいルールを作成したい、既存のルールの色を変更する話ではないのです:シェル/ bashの

  • ため

    • などを多分詩のためのEXTREMの場合には、ここで

       
          ├── src 
          │   ├── app 
          │   │   ├── app-routing.module.ts 
          │   │   ├── app.component.css 
          │   │   ├── app.component.css.map 
          │   │   ├── app.component.html 
          │   │   ├── app.component.scss 
          │   │   ├── app.component.spec.ts 
          │   │   ├── app.component.ts 
          │   │   ├── app.module.ts 
          │   │   └── lesson 
          │   │    ├── lesson.component.css 
          │   │    ├── lesson.component.css.map 
          │   │    ├── lesson.component.html 
          │   │    ├── lesson.component.scss 
          │   │    ├── lesson.component.spec.ts 
          │   │    └── lesson.component.ts 
      
      :私は

    太字単語「愛」のすべての外観を示してほしいまたは私はツリーを表示し、すべてのspec.tsをマークしたいことのような、大胆なファイル

  • +1

    内蔵シェルモードがあります。 –

    答えて

    0

    最も簡単な方法はexisting exampleです。

    あなたは、そのファイルを見れば、あなたはそれがタプルの二つのリストを囲んで、いくつかの決まり文句があることがわかります。ファイル拡張子リストは"ext"が含まれている場合

    PR['registerLangHandler'](
        PR['createSimpleLexer'](
         [ 
          // Some tuples 
         ], 
         [ 
          // Some more tuples 
         ], 
         [/* Some file extensions without dot */])); 
    

    をして飾り立てるはでコードブロックを飾り立てるように頼まれますこのハンドラが使用されます。

    タプルの2つのセットは、同様の構造を持っています。 は、ここで最初のセット

    ['opn',    /^\(+/, null, '('], 
    ['clo',    /^\)+/, null, ')'], 
    

    からいくつかのだと、ここで第二セットからの一つです。

    [PR['PR_KEYWORD'],  /^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|...)\b/, null], 
    

    PR['PR_KEYWORD']predefined token typeあるとpredefined stylesheetでスタイルをアップ一致する:

    .kwd { color: #008 } /* a keyword */ 
    

    言っている

    ['opn',    /^\(+/, null, '('], 
    

    コードの先頭が開始した場合、prettifyingときということです/^\(+/と入力すると、入力は<span class="opn">...</span>にラップされます。 opn(LISPのオープンカッコ)は文字列リテラルで、定義済みの定数がないためです。独自のトークン型クラスを定義する場合は、どのようなページ読み込みでもスタイルルールを定義する必要があります。

    右の文字列'('は、入力テキストがこれらの文字のいずれかで始まる場合に適用される唯一のルールであるように、文字のリストとして扱われます。これは、過去数年間でIE 6の重要な最適化でした。

    タプルの2つのグループの唯一の違いは、最初のリストのものがこの特別な排他的な文字要素を持つことです。

    IIRCの場合、nullは、これまで必要であったことはめったになく、もはやサポートされていない機能をサポートしていました。その位置に置いた値は無視されます。

    ハンドラCSSハンドラには、これに関するすべてのドキュメントがあり、他の機能の1つを示しています。

    ['lang-css-kw', /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i], 
    

    トークンタイプではなく、<span class="lang-css-kw">...</span>を生成する、lang-で始まっている場合は、ファイル拡張子css-kwの言語ハンドラを探し、この機能は行き過ぎここにおそらくあるグループ1の内容に再帰的にそれを適用します飾り立てます最新のJSエンジンは先読みを一貫してサポートしていますが、HTMLモードではJSおよびCSSモードを<script>および<style>ブロックの内容に再帰的に適用できる必要があります。


    Prettifyは、トークンに対して左から右へのパスにのみ依存するすべての変換を処理できます。それは曖昧さ回避のためのサイド・テーブル内のシンボルを収集するための方法を持っていないので、これらの2つのCスニペットを区別する方法はありません。この制限されたアプローチは、より堅牢なようだ

    typedef int t // t is declared as a type 
    t* x; // declare x as a pointer to a t. "t" should have class="typ" 
    

    int t = 1; // t is declared as a variable, not a type 
    t* x; // multiplication. "t" should not have class="typ" 
    

    からあなたが頻繁にstackoverflowのようなサイトで見るコードと不正なコードの小さな断片の顔。

    • タイプ名が_tで終わる首都
    • 識別子で始まるようですが、共通の言語規則をエンコードするのが妥当だが種類のあなたのルールで

    です。

    関連する問題