Support formatting of heredoc with HTML (& potentially other embedded languages)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện ví dụ PHP heredoc được cung cấp trong Prettier PHP playground và so sánh đầu ra hiện tại với định dạng HTML mong đợi. Theo dõi cách nội dung heredoc được phân tích cú pháp và in ra, sau đó xác định tiêu chí hoàn thành là định dạng HTML được nhúng trong khi vẫn bảo toàn phép nội suy PHP và cú pháp heredoc; việc hỗ trợ các ngôn ngữ nhúng khác vẫn thuộc phạm vi rộng hơn để thực hiện sau.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Thanks for all the work on this project, Prettier team!
Description
For HTML specifically, this is probably related to better inline support, & https://github.com/prettier/plugin-php/issues/845#issuecomment-441405121 but I figured the implementation for this would be slightly more straight forward as the explicit marking of HTML may make it more likely a html node be fully represented in one string. Many editors (including VSCode) also already highlight these sections by default with their respective syntax highlightings. Whilst prettier's HTML parser is still too strict to deal with interpolated tags (e.g. <$foo></$foo>, other parsers (like the one used in VSCode's builtin HTML formatter), can handle it.
For other languages, I guess it would depend more on their parsers, but I foresee that we could probably either use some sort of placeholder-replacement system, or just pass the whole string as is & YOLO.
Prettier 1.16.4
PHP Plugin 0.10.2
# Options (if any):
--use-tabs --php-version 8.2 --brace-style 1tbs
Input:
<?php
function Component($foo) {
echo <<<HTML
<div data-this-should-break data-bruh data-intersection>foo: $foo</div>
HTML;
}
echo <<<HTML
<main>
{${Component(foo: "bar")}}
{${Component(foo: "baz")}}
</main>
HTML;
Output:
(The same)
<?php
function Component($foo) {
echo <<<HTML
<div data-this-should-break data-bruh data-intersection>foo: $foo</div>
HTML;
}
echo <<<HTML
<main>
{${Component(foo: "bar")}}
{${Component(foo: "baz")}}
</main>
HTML;
Expected behavior:
The HTML should be formatted.
<?php
function Component($foo) {
echo <<<HTML
<div
data-this-should-break
data-bruh
data-intersection
>
foo: $foo
</div>
HTML;
}
echo <<<HTML
<main>
{${Component(foo: "bar")}}
{${Component(foo: "baz")}}
</main>
HTML;
- Ngôn ngữ chính
- PHP
- Star
- 1.9k
- Fork
- 139
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của prettier/plugin-php
-
PHP 8.3 not allowed in options? Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 62/100
prettier/plugin-php#2416 · 2 bình luận · 6 reaction ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 64/100
prettier/plugin-php#2498 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
prettier/plugin-php#2495 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
prettier/plugin-php#2494 · 1 bình luận ·
-
strange format issue Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 48/100
prettier/plugin-php#2490 ·
Tất cả issue của prettier/plugin-php
Issue tương tự
-
[Chore] Keep one viget-block-generator skill and replicate it, instead of four tracked copies Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 85/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
hector-jewell/food-delivery-system-for-restaurant-using-php#1311 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Sylius/SyliusGridBundle#501 ·