3

Markdownを静的htmlページに変換するために、 PygmentsでJekyllを使用しています。コンテンツはGitHub ページ用に用意されています。コード サンプル (この例ではシェル コマンド) を表示するには、次のセクションをファイルに追加します。

{% highlight sh %}
$ ls -1a
.
..
README
{% endhighlight %}

パラメータshは、レクサーを構成するシェルを参照します。consoleテキストの強調表示など、他のレクサーを選択することもできます。

lsなどのいくつかの基本的なコマンドがシェル レクサーによって強調表示されていないことに気付きました。これは、lexerのソース コードにも見られます。次の抜粋は、シェル lexer (BashLexer クラスにあります) のキーワード定義を示しています。

...
'basic': [
    (r'\b(if|fi|else|while|do|done|for|then|return|function|case|'
     r'select|continue|until|esac|elif)\s*\b',
     Keyword),
    (r'\b(alias|bg|bind|break|builtin|caller|cd|command|compgen|'
     r'complete|declare|dirs|disown|echo|enable|eval|exec|exit|'
     r'export|false|fc|fg|getopts|hash|help|history|jobs|kill|let|'
     r'local|logout|popd|printf|pushd|pwd|read|readonly|set|shift|'
     r'shopt|source|suspend|test|time|times|trap|true|type|typeset|'
     r'ulimit|umask|unalias|unset|wait)\s*\b(?!\.)',
     Name.Builtin),
    (r'#.*\n', Comment),
    (r'\\[\w\W]', String.Escape),
    (r'(\b\w+)(\s*)(=)', bygroups(Name.Variable, Text, Operator)),
    (r'[\[\]{}()=]', Operator),
    (r'<<-?\s*(\'?)\\?(\w+)[\w\W]+?\2', String),
    (r'&&|\|\|', Operator),
],
...

キーワードのリストを拡張する方法はありますか、または代わりに別のレクサーを推奨できますか?

4

1 に答える 1