Skip to content

Commit

Permalink
docs(website): fix typo. s/properties'/prettier's/
Browse files Browse the repository at this point in the history
  • Loading branch information
chansuke committed Dec 6, 2023
1 parent 4c62f38 commit d056c2e
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 69 deletions.
2 changes: 1 addition & 1 deletion website/src/content/docs/formatter/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ Biome's parser is intentionally stricter than the Prettier parser.
It correctly identifies the following syntax errors:

- A function cannot have duplicate modifiers
- invalid order of properties' modifiers
- invalid order of propertie's modifiers
- Function declarations are not allowed to have bodies
- non-abstract classes cannot have abstract properties
- An optional chain cannot be assigned
Expand Down
78 changes: 10 additions & 68 deletions website/src/content/docs/ja/formatter/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ const expr =

Prettier との間にいくつかの相違点が存在します。

### Prettierは有効なJavaScript識別子である一部のオブジェクトプロパティの引用符を外しません
### Prettierは有効なJavaScript識別子である一部のオブジェクトプロパティの引用符を外しません

PrettierとBiomeは、有効なJavaScript識別子であるオブジェクトおよびクラスプロパティの引用符を外します。
Prettierは[ES5の有効な識別子のみ引用符を外します](https://github.com/prettier/prettier/blob/a5d502513e5de4819a41fd90b9be7247146effc7/src/language-js/utils/index.js#L646)
Expand Down Expand Up @@ -122,27 +122,16 @@ const obj = {
𐊧: true,
};
```
<<<<<<< Updated upstream
### Prettierは計算されたキーの割り当てで一貫性のない挙動を示します。

PrettierとBiomeは、条件文などで、割り当て表現を括弧で囲みます。これにより、Biomeは比較式であるべき表現を識別できます。

Prettierは、オブジェクトのプロパティの計算されたキーの割り当てに括弧を追加する一方で、クラスのプロパティの計算されたキーではそれを行いません。以下の例で示されます:


Input
=======


### Prettierは計算されたキーの割り当てで一貫性のない挙動を示します。
### Prettierは計算されたキーの割り当てで一貫性のない挙動を示します

PrettierとBiomeは、条件文などで、割り当て表現を括弧で囲みます。
これにより、Biomeは比較式であるべき表現を識別できます。

Prettierは、オブジェクトのプロパティの計算されたキーの割り当てに括弧を追加する一方で、クラスのプロパティの計算されたキーではそれを行いません。以下の例で示されます:

入力
>>>>>>> Stashed changes

```js title="example.js"
a = {
Expand All @@ -154,11 +143,7 @@ class C {
}
```

<<<<<<< Updated upstream
Diff
=======
差分
>>>>>>> Stashed changes

```js title="example.js" del={2} ins={3}
a = {
Expand All @@ -176,11 +161,7 @@ class C {
一貫性を保つために、私たちはここで異なる道を選び、括弧を省略することにしました。
代替案としては、オブジェクトまたはクラスの計算されたキーのどの割り当ても括弧で囲むことができます。

<<<<<<< Updated upstream
=======

>>>>>>> Stashed changes
### Prettierは必要ない場合でも矢印関数の型パラメータに末尾のカンマを追加します。
### Prettierは必要ない場合でも矢印関数の型パラメータに末尾のカンマを追加します

特定のケースでは、アロー関数の型パラメータリストに末尾のカンマが必要となり、JSX要素と区別する必要があります。
デフォルト型が提供されている場合、この末尾のカンマは必要ありません。
Expand All @@ -200,7 +181,7 @@ Diff
```


### Prettierは無効な構文をフォーマットします
### Prettierは無効な構文をformatします

PrettierのBabelベースのJavaScriptおよびTypeScriptの解析は非常に緩く、[複数のエラーを無視](https://github.com/prettier/prettier/blob/e4a74c05f4502dd4ec70495c3130ff08ab088e05/src/language-js/parse/babel.js#L177-L218) することが許可されています。
Biomeのパーサーは意図的にPrettierのパーサーよりも厳格です。
Expand All @@ -209,54 +190,31 @@ Biomeのパーサーは意図的にPrettierのパーサーよりも厳格です
- 関数には重複する修飾子を持つことはできません
- プロパティの修飾子の無効な順序
- 関数宣言には本体を持つことができません
<<<<<<< Updated upstream
- 抽象クラス以外のクラスには抽象プロパティを持つことはできません
- オプショナルチェーンに割り当てることはできません
- インターフェースの型パラメータにconst修飾子を設定することはできません
- トップレベルのreturn
=======
- non-abstract クラスは抽象プロパティを持つことはできません
- オプショナルチェーンに割り当てることはできません
- インターフェースの型パラメータに ``const` 修飾子を設定することはできません
- トップレベルの return
>>>>>>> Stashed changes
- その他

Prettierでは、これらのエラーは解析エラーとは見なされず、適切なノードでASTが "正しく" 構築されます。
フォーマット時にPrettierはこれらのノードを通常通り扱い、それに応じてフォーマットします
format時にPrettierはこれらのノードを通常通り扱い、それに応じてformatします

<<<<<<< Updated upstream
Biomeでは、解析エラーは `Bogus` ノードとして結果に現れ、有効なノード、無効なノード、生の文字のいずれかを含むことがあります。
フォーマット時にBiomeは、bogusノードを事実上のプレーンテキストとして扱い、フォーマットを試みることが誤って意味を変える可能性があるため、結果のコードにそのまま文字通り出力します。
=======
Biomeでは、解析エラーは `Bogus` ノードとして結果に現れ、有効なノード、無効なノード、および/または 生の文字のいずれかを含むことがあります。
フォーマット時、Biomeは bogusノードを事実上のプレーンテキストとして扱い、フォーマットを試みることが誤って意味を変える可能性があるため、結果のコードにそのまま文字通り出力します。
>>>>>>> Stashed changes
Biomeでは、解析エラーは`Bogus`ノードとして結果に現れ、有効なノード、無効なノード、および/または生の文字のいずれかを含むことがあります。
format時、Biomeは bogusノードを事実上のプレーンテキストとして扱い、formatを試みることが誤って意味を変える可能性があるため、結果のコードにそのまま文字通り出力します。

クラスプロパティに関して、Prettierの現在の解析戦略は修飾子に対してブール値のフィールドを使用し、各種類の修飾子が一つしか存在できないことを意味します(アクセス修飾子は単一の文字列として格納されます)。
クラスプロパティに関して、Prettierの現在の解析戦略は修飾子に対してブール値のフィールドを使用し、各種類の修飾子が1つしか存在できないことを意味します(アクセス修飾子は単一の文字列として格納されます)。
出力時に、Prettierはブール値のリストを見て、どの修飾子を再び出力するかを決定します。一方、Biomeは修飾子のリストを保持し、重複を含めて分析が可能になります(これが重複修飾子や順序に関する解析エラーメッセージの原因です)。
不正確なノードを出力する際には、このリストがそのまま維持され、整形されていないテキストの出力はこれらの修飾子が存在し続ける結果となります。

Biomeはこの問題に対処する方法があります。
<<<<<<< Updated upstream
一つの可能性として、整形時に不正確なノードを解釈し、それらから有効なノードを構築することです。
1つの可能性として、整形時にBogus なノードを解釈し、それらから有効なノードを構築することです。
有効なノードが構築できれば、通常通りそのノードを整形しますが、そうでない場合は現在のように不正確なテキストをそのまま出力します。
しかし、これはやや雑然としており、整形器に意味のない解析ロジックを導入することになります。

別の選択肢としては、純粋に意味論的なエラー(重複修飾子、抽象クラス以外のクラスでの抽象プロパティ)を受け入れる「文法的に有効な不正確なノード」をパーサーに導入することです。

これにより、通常通りノードを構築しつつ(Prettierの挙動と一致させつつ)、新しい種類の不正確なノードに診断情報を含めて格納します。
整形時には、これら特定の不正確なノードが内部ノードを整形しようと試み、エラーが発生した場合はフォールバックします(既存のformat_or_verbatimユーティリティがこれを行います)。
=======
一つの可能性として、整形時にBogus なノードを解釈し、それらから有効なノードを構築することです。
有効なノードが構築できれば、通常通りそのノードを整形しますが、そうでない場合は現在のように不正確なテキストをそのまま出力します。
しかし、これはやや雑然としており、整形器に意味のない解析ロジックを導入することになります。

別の選択肢としては、純粋に意味論的なエラー(重複修飾子、abstract-class 以外のクラスでの抽象プロパティ)を受け入れる "syntactically-valid bogus node(文法的に不正確なノード)" をパーサーに導入することです。
別の選択肢としては、純粋に意味論的なエラー(重複修飾子、abstract-class 以外のクラスでの抽象プロパティ)を受け入れる "syntactically-valid bogus node(文法的に不正確なノード)" をパーサーに導入することです。

これにより、通常通りノードを構築しつつ(Prettierの挙動と一致させつつ)、新しい種類の不正確なノードに診断情報を含めて格納します。
整形時には、これら特定の不正確なノードが内部ノードを整形しようと試み、エラーが発生した場合はフォールバックします(既存の `format_or_verbatim` ユーティリティがこれを行います)。
>>>>>>> Stashed changes
これにより、解析と整形のロジックを分離しつつ、パーサーに複雑さを加えることで、無効な状態を半有効とみなすことが可能になります。

#### クラスプロパティの重複する修飾子
Expand Down Expand Up @@ -355,15 +313,9 @@ return (
return someVeryLongStringA && someVeryLongStringB && someVeryLongStringC && someVeryLongStringD
```

<<<<<<< Updated upstream
#### Erroneous self-increment and self-decrement

Input
=======
#### 誤った self-increment と self-decrement

入力
>>>>>>> Stashed changes

```js title="example.js"
(1)++;
Expand All @@ -374,27 +326,17 @@ Input
(1)++;
```

<<<<<<< Updated upstream
#### Use of `abstract` modifier in non-abstract classes

Input
=======
#### 抽象クラスでないクラスでの `abstract` 修飾子の使用

入力
>>>>>>> Stashed changes

```ts title="example.js"
class C {
abstract f() : number;
}
```

<<<<<<< Updated upstream
Diff
=======
差分
>>>>>>> Stashed changes


```ts title="example.js" del{2} add={3}
Expand Down

0 comments on commit d056c2e

Please sign in to comment.