Js-beautify: HTML: Proposal untuk mengatur pengaturan pembungkusan atribut

Dibuat pada 31 Mei 2018  ·  9Komentar  ·  Sumber: beautify-web/js-beautify

Diambil dari #1297.

Apa yang kita miliki

wrap_attributes :

  • auto - mengaktifkan pembungkus atribut.
  • force - atribut pertama tetap, yang lain dibungkus dengan "wrap_attributes_indent_size"
  • force-aligned - atribut pertama tetap, yang lain dibungkus dan disejajarkan dengan yang pertama
  • force-expand-multiline - Jika ada lebih dari 1 atribut, SEMUA atribut akan dibungkus dan diindentasi dengan "wrap_attributes_indent_size". DAN: penutup '>' dari tag pembuka juga ada di baris baru. Mode ini saat ini rusak, menghasilkan file indentasi yang salah :(

Ada juga beberapa upaya untuk menyediakan beberapa mode tambahan yang berhubungan dengan pembungkusan elemen html panjang dengan banyak atribut: #1285 dan #1262.

Saya pikir ada banyak masalah (ortogonal) di sini dan menempatkan semuanya ke dalam nilai tunggal akan menciptakan lebih banyak kebingungan dan ledakan nama opsi yang aneh jika kita ingin menangani semua kasus.

Jadi, mari kita pisahkan pembungkus, perataan dan jumlah atribut per baris, dll.

Usul

wrap_attributes_mode :

  • none - Kami hanya tidak membungkus atribut, titik. (diperlukan?)
  • auto - Pembungkusan atribut normal, ini harus menjadi default, mungkin, sebagai kasus yang paling logis. Ketika garis terlalu besar, kami membungkus. Jika semua atribut bisa masuk ke dalam satu baris, mereka tetap berada di satu baris, tanpa pembungkus. (Bawaan.)
  • force - Kami secara paksa membungkus jika ada lebih dari 1 atribut yang ada, jika tidak otomatis.

Saat pembungkus sedang beraksi, properti berikut sedang dimainkan. Jika tidak ada pembungkus yang terjadi, mereka tidak memainkan peran apa pun.

wrapped_attributes_per_line :

  • multiple - Pembungkus lembut, default . Pasang sebanyak mungkin attrs per baris yang diizinkan.
  • single - Atribut pertama tetap di baris pertama, yang lain berada di baris terpisah.
  • single-all - Semua atribut, termasuk yang pertama, ditempatkan pada baris terpisah. Jadi, setiap atribut berada pada baris yang terpisah, dan baris elemen/tag tidak memiliki atribut yang tersisa.

wrapped_attributes_indent :

  1. otomatis -- Menggunakan wrap_attributes_indent_size , default .
  2. selaras -- Semua baris atribut mulai disejajarkan dengan atribut pertama. Jika atribut pertama berada pada baris baru (mode "single-all" dari wrapped_attributes_per_line ), maka kita menggunakan wrap_attributes_indent_size untuk menghitung indentasi.

wrapped_attributes_end :

  • auto - default
  • multiline - > penutup ada di baris terpisah.

Contoh

  1. DEFAULT case: Kami membungkus lembut dan mencoba memasukkan sebanyak mungkin atribut per baris, tetapi dalam batas panjang garis.
wrap_attributes_mode = auto
wrapped_attributes_per_line = multiple
wrapped_attributes_indent = auto
wrapped_attributes_end = auto
  1. # 1285 kasus. Sangat mirip dengan kasus default, tetapi kami menyelaraskan atribut yang dibungkus agar berada pada level indentasi yang sama dengan atribut pertama.
wrap_attributes_mode = auto
wrapped_attributes_per_line = multiple
wrapped_attributes_indent = aligned
wrapped_attributes_end = auto
  1. #1262 kasus. Saat kita membungkus, kita menginginkan satu atribut per baris, sejajar dengan yang pertama.
wrap_attributes_mode = auto
wrapped_attributes_per_line = single
wrapped_attributes_indent = aligned
wrapped_attributes_end = auto
  1. Kasus force-expand-multiline saat ini: Pembungkusan paksa jika ada lebih dari 1 atribut, dengan satu atribut per baris, dan dengan akhiran multi-baris, menempatkan > penutup pada baris baru.
wrap_attributes_mode = force
wrapped_attributes_per_line = single-all
wrapped_attributes_indent = auto
wrapped_attributes_end = multiline
javascript discussion enhancement

Komentar yang paling membantu

Saya suka proposal Anda, dan saya pikir implementasi yang lebih sederhana yang dapat menyelesaikan banyak masalah bagi sebagian orang, akan menjadi opsi untuk mengonfigurasi titik di mana "memaksa" menggunakan auto. Misalnya, dapat mengatakan, jika memiliki atribut kurang dari X, gunakan auto, jika tidak, force wrap.

Semua 9 komentar

@vvs
Keren terima kasih!

Sepertinya ada tumpang tindih antara force dan multiple , tetapi beberapa konflik mungkin tidak dapat dihindari dengan kerumitan pengaturan

Seperti yang saya katakan, saya suka nama nilai yang Anda pilih secara umum. Saya pikir saya akan mengubah wrapped_attributes_end menjadi expand-multiline - karena itu hanya berkembang ketika elemen adalah elemen multiline.

Sepertinya Anda akan menentang penggunaan daftar nilai yang dipisahkan koma seperti yang dilakukan brace-style ( [collapse|expand|end-expand|none][,preserve-inline] ). Saya bertanya hanya karena saya tidak suka memiliki lebih banyak bidang opsi ketika satu bidang dapat berfungsi.

Hai @bitwiseman. Ya, ada sedikit tumpang tindih antara force dan multiple . Pada dasarnya, "memaksa" beberapa atribut sama dengan auto :)

Saya juga setuju dengan expand-multiline .

Sepertinya Anda akan menentang menggunakan nilai yang dipisahkan koma

Secara pribadi, saya dapat hidup dengan apa pun, bahkan jika pengaturannya adalah nilai yang dikodekan BASE64! Hal utama adalah saya dapat menyesuaikan perilaku pemformatan dengan kebutuhan saya/tim (yang saat ini sejalan dengan #1262).

Tetapi sebagai masalah preferensi, memiliki "grup opsi" yang terpisah lebih baik sehingga saya dapat memodifikasinya secara mandiri dan memikirkan masalah (ortogonal) yang berbeda secara mandiri. Dan, yang terpenting, membuat lebih mudah untuk mendokumentasikan pengaturan secara terpisah dibandingkan dengan daftar besar semua kemungkinan kombinasi.

@vvs
Poin bagus tentang memiliki pengaturan terpisah untuk perilaku yang berbeda.

Saya suka proposal Anda, dan saya pikir implementasi yang lebih sederhana yang dapat menyelesaikan banyak masalah bagi sebagian orang, akan menjadi opsi untuk mengonfigurasi titik di mana "memaksa" menggunakan auto. Misalnya, dapat mengatakan, jika memiliki atribut kurang dari X, gunakan auto, jika tidak, force wrap.

Saya ingin menggunakan "aligned-multiple" jika menggunakan <= 3 atribut, jika tidak "force-aligned". Apakah ini mungkin saat ini?

@otonielguajardo

Itu tidak ada saat ini.

Apa yang Anda minta mirip dengan #1262, yang pada dasarnya adalah "Izinkan atribut satu baris kecuali mereka akan membungkus, dalam hal ini menyelaraskannya."
Sepertinya @Adondriel meminta sesuatu seperti yang Anda inginkan (berdasarkan jumlah atribut) dalam masalah itu juga.

ada kemajuan?

Ada rencana untuk meninjau kembali ini?

@notiv-nt @Drumstix42
Dengan waktu saya yang terbatas, saya telah memperbaiki bug lain.
Ini masih layak dilakukan, tetapi membutuhkan seseorang untuk meluangkan waktu untuk menyelesaikan desain dan mengimplementasikannya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat