1146 字
6 min
Expressive Codeの例
ここでは、Expressive Code を使用したコードブロックの表示方法について見ていきます。提供される例は公式ドキュメントに基づいており、さらなる詳細についてはそちらを参照してください。
Expressive Code
シンタックスハイライト
通常のシンタックスハイライト
console.log('This code is syntax highlighted!')ANSIエスケープシーケンスのレンダリング
ANSI colors:- Regular: Red Green Yellow Blue Magenta Cyan- Bold: Red Green Yellow Blue Magenta Cyan- Dimmed: Red Green Yellow Blue Magenta Cyan
256 colors (showing colors 160-177):160 161 162 163 164 165166 167 168 169 170 171172 173 174 175 176 177
Full RGB colors:ForestGreen - RGB(34, 139, 34)
Text formatting: Bold Dimmed Italic Underlineエディターとターミナルフレーム
コードエディターフレーム
console.log('Title attribute example')<div>File name comment example</div>ターミナルフレーム
echo "This terminal frame has no title"Write-Output "This one has a title!"フレームタイプのオーバーライド
echo "Look ma, no frame!"# Without overriding, this would be a terminal framefunction Watch-Tail { Get-Content -Tail 20 -Wait $args }New-Alias tail Watch-Tailテキストと行マーカー
全行と行範囲のマーク
// Line 1 - 行番号でターゲット指定// Line 2// Line 3// Line 4 - 行番号でターゲット指定// Line 5// Line 6// Line 7 - 範囲 "7-8" でターゲット指定// Line 8 - 範囲 "7-8" でターゲット指定行マーカータイプの選択 (mark, ins, del)
function demo() { console.log('この行は削除としてマークされます') // この行とその次の行は挿入としてマークされます console.log('これは2番目の挿入行です')
return 'この行は中立のデフォルトマーカータイプを使用します'}行マーカーへのラベル追加
<button role="button" {...props} value={value} className={buttonClassName} disabled={disabled} active={active}> {children && !active && (typeof children === 'string' ? <span>{children}</span> : children)}</button>独立した行に長いラベルを追加
<button role="button" {...props}
value={value} className={buttonClassName}
disabled={disabled} active={active}>
{children && !active && (typeof children === 'string' ? <span>{children}</span> : children)}</button>diffライクな構文の使用
この行は挿入としてマークされますこの行は削除としてマークされますこれは通常の行です--- a/README.md+++ b/README.md@@ -1,3 +1,4 @@+これは実際のdiffファイルです-すべての内容は変更されません空白も削除されませんシンタックスハイライトとdiffライクな構文の組み合わせ
function thisIsJavaScript() { // このブロック全体がJavaScriptとしてハイライトされますが、 // diffマーカーも追加できます! console.log('削除される古いコード') console.log('新しくて素晴らしいコード!')}行内の特定テキストのマーク
function demo() { // 行内の指定されたテキストをマーク return '指定されたテキストの複数のマッチがサポートされます';}正規表現
console.log('yes と yep の単語がマークされます。')スラッシュのエスケープ
echo "Test" > /home/test.txtインラインマーカータイプの選択 (mark, ins, del)
function demo() { console.log('これらは挿入および削除マーカータイプです'); // return文はデフォルトのマーカータイプを使用します return true;}自動折り返し
コードブロックごとの自動折り返し設定
// wrapの例function getLongString() { return 'これは、コンテナが非常に幅広でない限り、利用可能なスペースに収まらない可能性が非常に高い非常に長い文字列です'}// wrap=falseの例function getLongString() { return 'これは、コンテナが非常に幅広でない限り、利用可能なスペースに収まらない可能性が非常に高い非常に長い文字列です'}折り返し行のインデント設定
// preserveIndentの例(デフォルトで有効)function getLongString() { return 'これは、コンテナが非常に幅広でない限り、利用可能なスペースに収まらない可能性が非常に高い非常に長い文字列です'}// preserveIndent=falseの例function getLongString() { return 'これは、コンテナが非常に幅広でない限り、利用可能なスペースに収まらない可能性が非常に高い非常に長い文字列です'}折りたたみ可能なセクション
5 collapsed lines
// このボイラープレートのセットアップコードはすべて折りたたまれますimport { someBoilerplateEngine } from '@example/some-boilerplate'import { evenMoreBoilerplate } from '@example/even-more-boilerplate'
const engine = someBoilerplateEngine(evenMoreBoilerplate())
// このコード部分はデフォルトで表示されますengine.doSomething(1, 2, 3, calcFn)
function calcFn() { // 複数の折りたたみ可能なセクションを持つことができます3 collapsed lines
const a = 1 const b = 2 const c = a + b
// これは表示されたままになります console.log(`Calculation result: ${a} + ${b} = ${c}`) return c}
4 collapsed lines
// このブロックの終わりまでのすべてのコードが再度折りたたまれますengine.closeConnection()engine.freeMemory()engine.shutdown({ reason: 'End of example boilerplate code' })行番号
コードブロックごとの行番号表示
// このコードブロックは行番号を表示しますconsole.log('2行目からご挨拶!')console.log('私は3行目です')// このブロックでは行番号は無効ですconsole.log('こんにちは?')console.log('すみません、私は何行目にいますか?')開始行番号の変更
console.log('5行目からご挨拶!')console.log('私は6行目です') Expressive Codeの例
https://asterion.pages.dev/posts/default/expressive-code/