prettier / prettier/plugin-php
Unstable runs: comment in php tag mixed with html
まだ誰も着手していません。
- 主要言語
- PHP
- スター
- 1.9k
- フォーク
- 139
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
When prettier-php has a comment directly after <php, it reformats the comment on each successive run, resulting in strange behaviour. The most bizarre is copying the line on each successive run of prettier.
note: By stable, I mean the second time you run prettier, it doesn't change the files. If there's a better word for this, I'm happy to change my description.
This bug is captured in a comment on another issue. However, due to this bug breaking a core properties of prettier, stable transformations, I think it's worth its own issue.
similar bugs:
- https://github.com/prettier/plugin-php/issues/2419 - does not have the unstable element
- https://github.com/prettier/plugin-php/issues/2380 - similar, but does not have the unstable element
Prettier 3.5.3
PHP Plugin 0.22.4
# Options (if any): None
module.exports = {
plugins: ["@prettier/plugin-php"],
};
Example 1
Input:
<?php
/**
* The template for displaying the footer
*/
?>
<div class="footer">
<?php
// Footer
get_template_part("template-parts/footer", "2022"); ?>
</div>
<?php wp_footer(); ?>
Output run 1:
<?php
/**
* The template for displaying the footer
*/
?>
<div class="footer">
<?php // Footer
get_template_part("template-parts/footer", "2022"); ?>
</div>
<?php wp_footer(); ?>
Output run 2:
<?php
/**
* The template for displaying the footer
*/
?>
<div class="footer">
<?php // Footer
// Footer
get_template_part("template-parts/footer", "2022"); ?>
</div>
<?php wp_footer(); ?>
Output run 3: each successive run adds a new line with // Footer
Example 2
Input:
</main><!-- #main -->
</div><!-- #primary -->
<?php
// get_sidebar();
get_footer();
Output run 1:
</main><!-- #main -->
</div><!-- #primary -->
<?php // get_sidebar();
get_footer();
Output run 2:
</main><!-- #main -->
</div><!-- #primary -->
<?php // get_sidebar();
get_footer();
Example 3
Input:
<header class="page-header">
<h1 class="page-title">
<?php
/* translators: %s: search query. */
printf(
esc_html__("Search Results for: %s", "gpo18"),
"<span>" . get_search_query() . "</span>"
); ?>
</h1>
</header><!-- .page-header -->
Output run 1:
<header class="page-header">
<h1 class="page-title">
<?php /* translators: %s: search query. */
printf(
esc_html__("Search Results for: %s", "gpo18"),
"<span>" . get_search_query() . "</span>"
); ?>
</h1>
</header><!-- .page-header -->
Output run 2:
<header class="page-header">
<h1 class="page-title">
/* translators: %s: search query. */<?php
/* translators: %s: search query. */
printf(
esc_html__("Search Results for: %s", "gpo18"),
"<span>" . get_search_query() . "</span>"
); ?>
</h1>
</header><!-- .page-header -->
Output run 3:
<header class="page-header">
<h1 class="page-title">
/* translators: %s: search query. */ /* translators: %s: search query. */<?php
/* translators: %s: search query. */
printf(
esc_html__("Search Results for: %s", "gpo18"),
"<span>" . get_search_query() . "</span>"
); ?>
</h1>
</header><!-- .page-header -->
cc: @movva-gpu
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
PHP タグの直後にコメントがある状態から始めて、Prettier 3.5.3 と PHP Plugin 0.22.4 で3つの例を再現します。PHP と混在した HTML を処理する formatter の経路を追跡し、その後、例のリグレッションカバレッジを追加します。繰り返しフォーマットした結果が同一になり、コメント行が重複したり移動したりしなければ完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- php
- 領域
- tooling
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 38/100