Js-beautify: 行がwrap-line-lengthに達したときにhtml属性をラップして整列します

作成日 2017年11月02日  ·  12コメント  ·  ソース: beautify-web/js-beautify

説明

の力の組み合わせを取得したい:
"wrap-attributes": "force-aligned",
"wrap-line-length": 120
行がwrap-line-lengthに達すると、行全体を折り返し、前の行に揃える必要があります。

入力

美化前のコードは次のようになりました。

<p-dataTable
    [value]="data"
    [(selection)]="selectedRows"
    (selectionChange)="onSelectionChange($event)"
    [editable]="editable"
    [selectionMode]="settings.selectionMode"
    [resizableColumns]="settings.resizable"
    [reorderableColumns]="settings.reorderable"
    responsive="true"
    scrollable="true"
    scrollHeight="550px"
    [lazy]="settings.lazy"
    [totalRecords]="totalRecords"
    [paginator]="settings.paginator"
    [rows]="settings.paginator?.rowsPerPage || 10">
</p-dataTable>

期待される出力

その機能で美化した後、コードは次のようになります。

<p-dataTable [value]="data" [(selection)]="selectedRows" (selectionChange)="onSelectionChange($event)" [editable]="editable"
             [selectionMode]="settings.selectionMode" [resizableColumns]="settings.resizable" [reorderableColumns]="settings.reorderable"
             responsive="true" scrollable="true" scrollHeight="550px" [lazy]="settings.lazy" [totalRecords]="totalRecords"
             [paginator]="settings.paginator" [rows]="settings.paginator?.rowsPerPage || 10">
</p-dataTable>
html enhancement

最も参考になるコメント

これに関する補足:私は実際にこれら2つの設定の組み合わせを探していましたが、提案された例のようになりました。 必要なのは、VSCodeが属性をそのままにして、要素が120より長くなると、新しい行の属性を整列させることです。したがって、必要なのは次のとおりです。

<div class="form-check form-group row">
  <label class="custom-control custom-checkbox" id="referral-filter-checkbox-label">
    <input type="checkbox" class="custom-control-input" id="referral-filter-checkbox" ng-checked="$ctrl.filterReferralsRx | async : this" ng-click="$ctrl.toggleFilterReferrals()">
    <input type="checkbox" class="custom-control-input"
           id="referral-filter-checkbox" 
           ng-checked="$ctrl.filterReferralsRx | async : this" 
           ng-click="$ctrl.toggleFilterReferrals()">
    <span class="custom-control-indicator"></span>
    <span class="custom-control-description text-nowrap">{{ 'MODEL.INBOX.ACTION.FILTER' | translate }}</span>
  </label>
</div>

に:

<div class="form-check form-group row">
  <label class="custom-control custom-checkbox" id="referral-filter-checkbox-label">
    <input type="checkbox"
           class="custom-control-input"
           id="referral-filter-checkbox"
           ng-checked="$ctrl.filterReferralsRx | async : this"
           ng-click="$ctrl.toggleFilterReferrals()">
    <input type="checkbox" class="custom-control-input"
           id="referral-filter-checkbox" 
           ng-checked="$ctrl.filterReferralsRx | async : this" 
           ng-click="$ctrl.toggleFilterReferrals()">
    <span class="custom-control-indicator"></span>
    <span class="custom-control-description text-nowrap">{{ 'MODEL.INBOX.ACTION.FILTER' | translate }}</span>
  </label>
</div>

2番目の入力に注意してください。属性は120文字以下であり、すでに整列されているため、属性はそのままにしておく必要があります。

ですから、私が見たいのは、力の代わりに、複数行の場合はそれらが整列していることを確認し、行が120文字を超える場合はそれらを複数行にすることです。

全てのコメント12件

+1、私と私のチームは同じ機能を必要としています、そしてそれはここで要求されたものと同じ機能のようです: https ://github.com/beautify-web/js-beautify/issues/1262
VSCode githubでもこの正確な機能が要求されているのを見ました: https ://github.com/Microsoft/vscode/issues/2204(最後のコメント)

私はソースコードを少し試してみましたが、機能しているように見える実装がいくつかあります。「wrap_attributes」の新しいオプション-「aligned」。行の長さに達しない限り属性を強制的にラップせず、行が折り返されます。

@bitwiseman、このようなものは機能しますか?

もしそうなら、私たちは詳細について話し合うか、PRを開くことができます。 (しかし、正直なところ、私は正確にはオープンソースの専門家ではなく、テストやPythonバージョンなどについて少し混乱しています)。 ええと、html beautifierはpythonには存在しないので、おそらくそれは問題ではありません:)ですから、ガイダンスは大歓迎です!

@cheerypick
これを実装することにスイングをしてくれてありがとう。

ええ、HTMLビューティファイアの変更のためのPythonバージョンについて心配する必要はありません-そのモジュールのPython実装はまだありません。

テストでは、ビルドを実行でき、ローカルで機能することを確認してください。 次に、 test / data / html /tests.jsを更新します。 ビルドを再度実行すると、そのデータファイルから実行可能なテストが再生成されます。 この例は#1158で見ることができます。 最初にいくつかの簡単なテストを試したい場合は、かっこいいです。 matrixテスト生成が機能する方法を理解できる場合は、 test / data / html / tests.js#L323の属性ラップテストに新しい値を追加します。

いずれにせよ、いつでもお気軽にPRを開始していただければ、そこで話し合うことができます。

再度、感謝します。

(必要と思われる追加の指示でCONTRIBUTING.mdを更新する場合は、それも歓迎されますが、必須ではありません。)

@ cheerypick-また、重複に注意していただきありがとうございます。 #1262でこの議論を続けてください。

これに関する補足:私は実際にこれら2つの設定の組み合わせを探していましたが、提案された例のようになりました。 必要なのは、VSCodeが属性をそのままにして、要素が120より長くなると、新しい行の属性を整列させることです。したがって、必要なのは次のとおりです。

<div class="form-check form-group row">
  <label class="custom-control custom-checkbox" id="referral-filter-checkbox-label">
    <input type="checkbox" class="custom-control-input" id="referral-filter-checkbox" ng-checked="$ctrl.filterReferralsRx | async : this" ng-click="$ctrl.toggleFilterReferrals()">
    <input type="checkbox" class="custom-control-input"
           id="referral-filter-checkbox" 
           ng-checked="$ctrl.filterReferralsRx | async : this" 
           ng-click="$ctrl.toggleFilterReferrals()">
    <span class="custom-control-indicator"></span>
    <span class="custom-control-description text-nowrap">{{ 'MODEL.INBOX.ACTION.FILTER' | translate }}</span>
  </label>
</div>

に:

<div class="form-check form-group row">
  <label class="custom-control custom-checkbox" id="referral-filter-checkbox-label">
    <input type="checkbox"
           class="custom-control-input"
           id="referral-filter-checkbox"
           ng-checked="$ctrl.filterReferralsRx | async : this"
           ng-click="$ctrl.toggleFilterReferrals()">
    <input type="checkbox" class="custom-control-input"
           id="referral-filter-checkbox" 
           ng-checked="$ctrl.filterReferralsRx | async : this" 
           ng-click="$ctrl.toggleFilterReferrals()">
    <span class="custom-control-indicator"></span>
    <span class="custom-control-description text-nowrap">{{ 'MODEL.INBOX.ACTION.FILTER' | translate }}</span>
  </label>
</div>

2番目の入力に注意してください。属性は120文字以下であり、すでに整列されているため、属性はそのままにしておく必要があります。

ですから、私が見たいのは、力の代わりに、複数行の場合はそれらが整列していることを確認し、行が120文字を超える場合はそれらを複数行にすることです。

Visual Studio(コードではない)は、デフォルトでHTMLをこのようにフォーマットします(整列されますが、強制されません)。 コードもできればいいのにと思います。

私のhtmlテンプレートコードが極端に長くならないように機能を追加してください。

これは非常に望ましいことです。 @cheerypickあなたはまだこれのためにPRをすることを計画していますか?

VSCodeで動作していません。
.vueファイル内
拡張機能:Prettier、Vetur
:-(

@christoferd
何を言っているのかわからないので、クローズされた問題にコメントを追加するのではなく、gitterチャンネルでチャットしてください。

VScodeを最新バージョンに更新した後、この問題が再び発生しました。 Mac OS HighSierraのバージョン1.30.2。 自動に設定されていて、突然コードが折り返され始めました。 力合わせを試みましたが、うまくいきません。

@ aybhalala @ christoferdあなたが見ているものについて具体的に教えてください。 gitterでチャットするか、新しい問題を開いてください。

@bitwisemanごめんなさい。 Prettierプラグインの問題であることがわかりました。 返信ありがとうございます。

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