Skip to content

Commit

Permalink
docs(ja): translate gritql page (#1615)
Browse files Browse the repository at this point in the history
  • Loading branch information
mehm8128 authored Dec 31, 2024
1 parent 3e88947 commit 4dacbb4
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ pnpm i --frozen-lockfile
This command starts a local development server:

```shell
pnpm start
pnpm dev
```

Most changes are reflected live without having to restart the server.
Expand Down
108 changes: 108 additions & 0 deletions src/content/docs/ja/reference/gritql.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
---
title: GritQL [実験的機能]
description: Biome における GritQL の基本的な使い方
---

GritQL は、ソースコードの構造検索を実行するためのクエリ言語です。
つまり、空白や、文字列で使用される引用符の種類などの些細な情報は、検索クエリでは無視されます。
さらに、スニペット、マッチング、ネスト、変数など、構文構造をクエリできる多くの機能も提供します。

GritQL は[オープンソース](https://github.com/getgrit/gritql/)であり、[Grit.io](https://grit.io/)によって作成されました。

Biome は GritQL を 2 つの目的で統合しています:

- IDE 拡張機能にも拡張したいと考えている、[`biome search`](/reference/cli/#biome-search) コマンド
- 現在進行中の、プラグインへの取り組み

## パターン

GritQL クエリは _パターン_ を通じて機能します。
最もよく見られるパターンは、バッククォートで囲まれた通常のソースコードのように見えるコードスニペットです。

```grit
`console.log('Hello, world!')`
```

このパターンは、文字列 `'Hello, world!'` が渡された全ての `console.log()` の呼び出しに一致します。
ただし、GridQLは _構造的_ マッチングを行うため、format の詳細には関心がありません。
これもマッチします:

```js
console.log (
'Hello, world!'
)
```

そして、これもマッチします(引用符が変化したことに注目してください):

```js
console.log("Hello, world!")
```

:::note
ほとんどのシェルはバッククォートをコマンド呼び出しとして解釈しますが、これは GritQL のコードスニペットと競合します。
そのため、`biome search` コマンドを使用する場合は、 Grit クエリを _シングルクォート_ で囲むのが最適です:

```shell
biome search '`console.log($message)`' # 全ての `console.log()` 呼び出しを検索
```
:::

## 変数

GritQL クエリでは変数も使用できます。
次のクエリは渡されるメッセージに関係なく、全ての `console.log()` 呼び出しに一致します。

```grit
`console.log($message)`
```

これは、`console` オブジェクトの任意のメソッドに一致します:

```grit
`console.$method($message)`
```

同じ変数名が 1 つのスニペット内で複数回出現することもできます。

```grit
`$fn && $fn()`
```

これは `foo && foo()` や、`foo.bar && foo.bar()` にもマッチしますが、`foo && bar()` にはマッチしません。

## 条件

`where` 演算子を使用してパターンに条件を追加できます。
これは通常、`<:` マッチ演算子と一緒に使用されます:

```grit
`console.$method($message)` where {
$method <: `log`
}
```

このクエリは先ほど見た `console.log($message)` パターンと同じですが、他の演算子を追加するとすぐに、さらに興味深いものになります:

```grit
`console.$method($message)` where {
$method <: or { `log`, `info`, `warn`, `error` }
}
```

## 言語ドキュメント

GritQL とその構文については、公式の [GritQL 言語ドキュメント](https://docs.grit.io/language/overview)を参照してください。

Biome は Grit の全ての機能を(まだ)サポートしていないことに注意してください。

## 統合状況

Biome は GritQL サポートに積極的に取り組んでいます。
多くの機能がすでに動作していますが、バグがまだ発生することが予想され、一部の機能はまだ完全に欠落しています。

サポートされている GritQL の機能と、まだ進行中の機能の詳細な概要については、GitHub の Issue を参照してください: https://github.com/biomejs/biome/issues/2582

プラグインの取り組みの方向性を示す詳細な RFC もあります: https://github.com/biomejs/biome/discussions/1762

**まとめ**: 私たちは、純粋な GritQL プラグイン、または GritQL を使用して操作したいコードを選択する JS/TS プラグインのいずれかをサポートするプラグインに取り組んでいます。お楽しみに!

0 comments on commit 4dacbb4

Please sign in to comment.