Js-beautify: Les lignes ne sont pas correctement mises en retrait lorsque les attributs sont encapsulés

Créé le 5 janv. 2017  ·  23Commentaires  ·  Source: beautify-web/js-beautify

La description

La mise en retrait est interrompue chaque fois que le bouclage d'attribut se produit.

Utilisation de js-beautify v1.6.8 .

Contribution

Le code ressemblait à ceci avant l'embellissement:

<div first second>content</div>
<div>content</div>

Production attendue

Le code aurait dû ressembler à ceci après l'embellissement:

<div first 
     second>content</div>
<div>content</div>

Sortie réelle

Le code ressemblait en fait à ceci après l'embellissement:

<div first
     second>content</div>
    <div>content</div>

Étapes à suivre pour reproduire

Embellissez le code

Environnement

OS: MacOS

Réglages

Exemple:

{
    "wrap_attributes": "force-aligned"
}

Remarque: wrap_attributes n'a pas besoin d'être défini sur force-aligné. Tout encapsulation (à l'exception de "force-expand-multiline") introduit, y compris si "auto" a provoqué l'encapsulation illustrera ce problème.

html bug

Commentaire le plus utile

Trouvé le problème. Fixation maintenant.

Tous les 23 commentaires

Je rencontre le même problème (via atom-beautify # 735 )

<p attr1 attr2 attr3>
  text
</p>

se transforme en

<p attr1
    attr2
    attr3>
  text
  </p>

mon enveloppement de force est activé

Pareil ici, le code continue à être de plus en plus indenté jusqu'au dernier moment. Il est impossible d'utiliser cet embellisseur plus comme ça, je dois formater manuellement le code: /

<nav id="header"
  class="navbar navbar-default">
  <div class="header-container container-fluid">
    <div class="logo-container navbar-header">
      <a ui-sref="stats"
        class="navbar-brand pws-icon pws-pws"></a>
    </div>
    <div class="header-contents collapse navbar-collapse">
      <ul class="tab-list nav navbar-nav">
        <li class="tab tab-prospects"
          ui-sref-active="active">
          <a ui-sref="stats">
            Stats
          </a>
          </li>
          <li class="tab tab-prospects"
            ui-sref-active="active">
            <a ui-sref="upload">
              Importer
            </a>
            </li>
            <li class="tab tab-prospects"
              ui-sref-active="active">
              <a ui-sref="territories">
                Territory Assignment
              </a>
              </li>

      </ul>
    </div>
  </div>
  </nav>

Je peux confirmer ce bug, qui a commencé au hasard.
À chaque fois que les attributs d'une balise sont bouclés, le contenu interne commence à se mettre en retrait de manière incorrecte.

[Éditer]
J'ai dû désactiver ce plugin pour reprendre mon travail jusqu'à ce qu'un correctif soit livré = /

pareil ici! = /

@bitwiseman Quelqu'un travaille-t-il là-dessus? C'est un paquet assez populaire et c'est un gros problème ... J'adorerais le voir corrigé: (malheureusement, je ne suis pas sûr de savoir quoi changer pour contribuer moi-même au code. Peut-être quelques pointeurs?

semble que supprimer "wrap_attributes": "force" in html du fichier .jsbeautifyrc résout le problème

@chenasraf - Contributing.md pour obtenir des instructions sur la création locale.
La requête d'extraction # 1104 montre à quoi ressemble un bon changement: ajoutez des entrées à test/data/html/tests.js , mettez à jour le code produit et compilez (les modifications apportées aux fichiers generated sont effectuées automatiquement).

@matheusdavidson - c'est bon à savoir. @chenasraf - vous voudrez ajouter un test à la matrice qui teste déjà l'option wrap_attributes .

Quelqu'un travaille-t-il vraiment là-dessus? Trop de fourches pour les vérifier toutes. Peut-être que je peux aider.

@ kf-ireneuszpatalas Je n'ai pas eu le temps de travailler dessus, et @chenasraf est la seule autre personne qui a exprimé son intérêt.

@bitwiseman Il semble que l'ajout de multi_parser.unindent() après js / lib / beautify-html.js: 980 résout ce problème, même si je ne suis pas sûr que cela corresponde à la logique, quelles conditions ajouter, etc. Si vous voulez toujours que je m'en occupe, il faudra quelques jours pour que j'aie suffisamment de temps libre pour passer en revue les bases de ce qui se passe dans le package. Soit ça, soit quelqu'un d'autre veut prendre les rênes

@chenasraf - cela provoque l'échec de plusieurs tests avant même de faire quoi que ce soit d'autre. Oui, je veux toujours que vous résolviez ce problème si vous le pouvez.

@chenasraf , @bitwiseman. J'ai le temps de jeter un œil demain.

Trouvé le problème. Fixation maintenant.

PR soumis

@HookyQR - Merci beaucoup! Fusionné et publié.

Serait-il possible d'étendre les options d'emballage avec "auto-align" ??

"force-align" forcera l'enroulement + l'alignement ...

mais disons que je ne veux pas encapsuler CHAQUE ÉLÉMENT HTML UNIQUE, mais seulement les plus longs - et ensuite les faire manuellement.

ainsi, "auto-align" alignerait uniquement ceux qui sont déjà enveloppés.

@Montago - Veuillez ouvrir un nouveau numéro décrivant ce que vous voulez, y compris les entrées, les sorties, etc.

@bitwiseman

il y en a déjà un ouvert avec la fonctionnalité que je recherche: https://github.com/beautify-web/js-beautify/issues/1125

Je viens de l'installer et j'obtiens le problème d'indentation avec grunt et l'option suivante: wrapAttributes: 'force-expand-multiline'
J'utilise la v1.7.5
Merci

Vous rencontrez également ce problème avec 'force-expand-multiline' des mises à jour?

Obtenir également ce problème avec 'force-expand-multiline'

@affanshahid @veDev
Avez-vous essayé cela avec la 1.8.0-rc2?

Cette page vous a été utile?
0 / 5 - 0 notes