Force Attribute
Whether or not markup attributes should be forced indented onto newlines. This rule accepts a boolean or integer type, both of which allow you to refine how attributes are to be formatted independent of Æsthetic’s default behavior of using the global wrap limit. When you provide forceAttribute an integer value of 1 or more Æsthetic will apply forcing when the number of attributes contained within a tag exceeds the supplied value limit.
Attribute forcing is disabled by default as the global
wraplimit is set to0. If you want wrap based forcing, you will need to set a word wrap character width.
Related Rules
If you are using the global defined wrap then Æsthetic will inline the leading (first) attribute. You may want to enable the forceLeadAttribute rule to prevent the default behavior and apply forcing to all attributes. For developers who have become accustomed to the Prettier formatting style which forces ending > markup tag delimiters onto newlines can replicate this output using the delimiterForce rule.
Mirrored Rule
The Liquid indentAttributes rule uses forceAttribute as disablement mirror. When attribute forcing is disabled then the Liquid indentAttributes rule reflects the disablement. In order to leverage the Liquid indentAttributes rule you will need to define an occurrence limit or enable this rule.
false
Below is the default, wherein attributes are not forced or indented.
- default
- recommended
- warrington
- strict
- prettier
<div
class="x"
id="{{ foo }}"
data-x="xx">
Attributes will be inlined
</div>
<div class="x" id="{{ foo }}" data-x="xx">
Attributes will be inlined
</div>true
Below is an example of how this rule works if it’s enabled, ie: true. When working with Liquid this is typically going to be the better option to use opposed when you desire a clear uniform across all your project.
- default
- recommended
- warrington
- strict
- prettier
<div class="x" id="{{ foo }}" data-x="xx">
<div class="x" id="{{ foo }}" data-x="xx">
Attributes will be forced onto newlines
</div>
</div>
<div
class="x"
id="{{ foo }}"
data-x="xx">
<div
class="x"
id="{{ foo }}"
data-x="xx">
Attributes will be forced onto newlines
</div>
</div>3
Below is an example of forced attributes when an integer value of 3 was provided. This is typically the best option to control attribute beautification.
- default
- recommended
- warrington
- strict
- prettier
<div class="x" id="{{ foo }}">
Attributes will not be forced as only 2 exist on tag
</div>
<div class="x" id="{{ foo }}" data-x="xx">
Attributes will be forced as tag contains 3
<div class="x">
Tag contains 1 attribute, it will not be forced
</div>
<div class="x" id="{{ foo }}" data-x="xx" data-xx="xxx">
Tag contains 4 attributes, they will be forced
</div>
</div>
<div class="x" id="{{ foo }}">
Attributes will not be forced as only 2 exist on tag
</div>
<div
class="x"
id="{{ foo }}"
data-x="xx">
Attributes will be forced as tag contains 3
<div class="x">
Tag contains 1 attribute, it will not be forced
</div>
<div
class="x"
id="{{ foo }}"
data-x="xx"
data-xx="xxx">
Tag contains 4 attributes, they will be forced
</div>
</div>Wrap Forcing
The below example is using wrap forcing. If you wish to apply wrap based forcing to attributes then the forceAttribute rule should be set to false and the global wrap rules must contain a value.
- default
- recommended
- warrington
- strict
- prettier
<div class="x" id="{{ foo }}">
Attributes will not be forced as only 2 exist on tag
</div>
<div class="x" id="{{ foo }}" data-x="xx">
Attributes will be forced as tag contains 3
<div class="x">
Tag contains 1 attribute, it will not be forced
</div>
<div class="x" id="{{ foo }}" data-x="xx" data-xx="xxx">
Tag contains 4 attributes, they will be forced
</div>
</div>
<div class="x" id="{{ foo }}">
Attributes will not be forced as only 2 exist on
tag
</div>
<div class="x" id="{{ foo }}" data-x="xx">
Attributes will be forced as tag contains 3
<div class="x">
Tag contains 1 attribute, it will not be forced
</div>
<div
class="x"
id="{{ foo }}"
data-x="xx"
data-xx="xxx">
Tag contains 4 attributes, they will be forced
</div>
</div>