1146 字
6 min
Expressive Codeの例

ここでは、Expressive Code を使用したコードブロックの表示方法について見ていきます。提供される例は公式ドキュメントに基づいており、さらなる詳細についてはそちらを参照してください。

Expressive Code#

シンタックスハイライト#

通常のシンタックスハイライト#

console.log('This code is syntax highlighted!')

ANSIエスケープシーケンスのレンダリング#

Terminal window
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 165
166 167 168 169 170 171
172 173 174 175 176 177
Full RGB colors:
ForestGreen - RGB(34, 139, 34)
Text formatting: Bold Dimmed Italic Underline

エディターとターミナルフレーム#

コードエディターフレーム#

my-test-file.js
console.log('Title attribute example')

src/content/index.html
<div>File name comment example</div>

ターミナルフレーム#

Terminal window
echo "This terminal frame has no title"

PowerShell terminal example
Write-Output "This one has a title!"

フレームタイプのオーバーライド#

echo "Look ma, no frame!"

PowerShell Profile.ps1
# Without overriding, this would be a terminal frame
function 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)#

line-markers.js
function demo() {
console.log('この行は削除としてマークされます')
// この行とその次の行は挿入としてマークされます
console.log('これは2番目の挿入行です')
return 'この行は中立のデフォルトマーカータイプを使用します'
}

行マーカーへのラベル追加#

labeled-line-markers.jsx
<button
role="button"
{...props}
value={value}
className={buttonClassName}
disabled={disabled}
active={active}
>
{children &&
!active &&
(typeof children === 'string' ? <span>{children}</span> : children)}
</button>

独立した行に長いラベルを追加#

labeled-line-markers.jsx
<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('yesyep の単語がマークされます。')

スラッシュのエスケープ#

Terminal window
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/
著者
Nyx
公開日
1002-04-10
License
CC BY-NC-SA 4.0