Js-beautify: HTML:属性ラッピング設定を整理するための提案

作成日 2018年05月31日  ·  9コメント  ·  ソース: beautify-web/js-beautify

#1297から抽出。

私たちが持っているもの

wrap_attributes

  • auto -属性の折り返しを有効にします。
  • force -最初の属性は残り、他の属性は「wrap_attributes_indent_size」でラップされます
  • force-aligned -最初の属性は残り、他の属性は最初の属性にラップされて整列されます
  • force-expand-multiline -1つ以上の属性がある場合、すべての属性は何があってもラップされ、「wrap_attributes_indent_size」でインデントされます。 AND:開始タグの終了 '>'も新しい行にあります。 このモードは現在壊れており、誤ってインデントされたファイルを生成します:(

複数の属性を持つ長いhtml要素のラッピングを処理するいくつかの追加モードを提供するための複数の取り組みもあります:#1285および#1262。

ここには複数の(直交する)懸念事項があり、それらすべてを1つの値にまとめると、すべてのケースを処理する場合、さらに混乱が生じ、奇妙なオプション名が爆発的に増えると思います。

それでは、行ごとのラッピング、整列、属性数などを分けてみましょう。

提案

wrap_attributes_mode

  • none -属性、ピリオドをラップしません。 (必要ですか?)
  • auto -通常の属性ラッピング。これは、おそらく最も論理的なケースとして、デフォルトである必要があります。 線が大きすぎる場合は折り返します。 すべての属性が1行に収まる場合、それらは1行にとどまり、折り返しはありません。 (ディフォルト。)
  • force -複数の属性が存在する場合は強制的にラップし、存在しない場合は自動でラップします。

ラッピングが実行されている場合、次のプロパティが機能します。 ラッピングが発生しない場合、それらは何の役割も果たしません。

wrapped_attributes_per_line

  • multiple -ソフトラッピング、デフォルト。 許可されている限り、行ごとにできるだけ多くの属性を適合させます。
  • single -最初の属性は最初の行に残り、他の属性は別の行にあります。
  • single-all -最初の属性を含むすべての属性が別々の行に配置されます。 したがって、すべての属性は別々の行にあり、要素/タグ行には属性が残っていません。

wrapped_attributes_indent

  1. auto-デフォルトwrap_attributes_indent_sizeを使用します。
  2. 整列-すべての属性は、最初の属性と整列して開始します。 最初の属性が新しい行にある場合( wrapped_attributes_per_lineの「シ​​ングルオール」モード)、 wrap_attributes_indent_sizeを使用してインデントを計算します。

wrapped_attributes_end

  • auto -デフォルト
  • multiline -最後の>は別の行にあります。

  1. デフォルトの場合:ソフトラップし、行ごとにできるだけ多くの属性を適合させようとしますが、行の長さの制限内です。
wrap_attributes_mode = auto
wrapped_attributes_per_line = multiple
wrapped_attributes_indent = auto
wrapped_attributes_end = auto
  1. #1285ケース。 デフォルトの場合と非常に似ていますが、ラップされた属性を最初の属性と同じインデントレベルになるように調整します。
wrap_attributes_mode = auto
wrapped_attributes_per_line = multiple
wrapped_attributes_indent = aligned
wrapped_attributes_end = auto
  1. #1262ケース。 折り返すときは、最初の属性に合わせて、行ごとに1つの属性が必要です。
wrap_attributes_mode = auto
wrapped_attributes_per_line = single
wrapped_attributes_indent = aligned
wrapped_attributes_end = auto
  1. 現在のforce-expand-multilineの場合:属性が複数あり、行ごとに1つの属性があり、複数行で終了している場合は、強制的に折り返し、最後の>を新しい行に配置します。
wrap_attributes_mode = force
wrapped_attributes_per_line = single-all
wrapped_attributes_indent = auto
wrapped_attributes_end = multiline
javascript discussion enhancement

最も参考になるコメント

私はあなたの提案が好きです、そして私は何人かの人々のために多くの問題を解決することができるさらに単純な実装が「力」が自動を使うポイントを構成するオプションであると思います。 たとえば、属性がX未満の場合はautoを使用し、そうでない場合は強制的に折り返します。

全てのコメント9件

@vvs
素晴らしいです、ありがとう!

forcemultipleの間に重複があるように見えますが、設定の複雑さにより、おそらくいくつかの競合は避けられません。

私が言ったように、私はあなたが一般的に選んだ値の名前が好きです。 wrapped_attributes_endexpand-multilineに変更すると思います。これは、要素が複数行の要素である場合にのみ展開されるためです。

brace-style[collapse|expand|end-expand|none][,preserve-inline] )のようにカンマ区切りの値リストを使用することに反対しているようです。 単一のフィールドが機能するときにオプションフィールドを増やすのが好きではないという理由だけで質問します。

こんにちは@bitwiseman。 ええ、 forcemultipleの間には少し重複があります。 基本的に、複数の属性を「強制」することはautoに等しい:)

expand-multilineでも大丈夫です。

カンマ区切りの値を使用することに反対するようです

個人的には、設定がBASE64でエンコードされた値であっても、何でも使用できます。 主なことは、フォーマットの動作を自分/チームのニーズに合わせて調整できることです(現在は#1262に準拠しています)。

しかし、好みの問題として、別々の「オプショングループ」を持っている方が良いので、それらを個別に変更して、異なる(直交する)懸念を個別に考えることができます。 そして、何よりも、考えられるすべての組み合わせの膨大なリストと比較して、設定を個別に文書化する方がはるかに簡単です。

@vvs
個別の動作に対して個別の設定を行うことの良い点。

私はあなたの提案が好きです、そして私は何人かの人々のために多くの問題を解決することができるさらに単純な実装が「力」が自動を使うポイントを構成するオプションであると思います。 たとえば、属性がX未満の場合はautoを使用し、そうでない場合は強制的に折り返します。

<= 3の属性を使用する場合は「aligned-multiple」を使用し、それ以外の場合は「force-aligned」を使用したいと思います。 現時点でこれは可能ですか?

@otonielguajardo

現在は存在しません。

求めているのは#1262に似ています。これは、基本的に「属性が折り返される場合を除いて、属性を1行許可します。折り返す場合は、属性を揃えます」です。
@Adondrielが、その問題でも(属性数に基づいて)必要なものを要求したようです。

何か進歩はありますか?

これを再検討する計画はありますか?

@ notiv-nt @ Drumstix42
限られた時間で、他のバグを修正してきました。
これはまだ行う価値がありますが、誰かが設計を完成させて実装するのに時間をかける必要があります。

このページは役に立ちましたか?
0 / 5 - 0 評価