-
Notifications
You must be signed in to change notification settings - Fork 18
Format SVGs #13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Format SVGs #13
Conversation
b2481c3
to
1a3732c
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Skipping formatting svg elements was intentional since svg elements usually have several attributes and seeing each of them on a separate line doesn't help much.
I think that:
<svg *ngIf="!small" xmlns="http://www.w3.org/2000/svg" width="111" height="111" viewBox="0 0 111 111">
<g fill="none" fill-rule="evenodd" transform="scale(1.819672131)">
<polygon class="primary" fill="#29AAE1" points="38 0 0 38 0 61 4 61 4 57 57.002 3.996 61 4 60.998 0"/>
<polygon fill="#000000" fill-opacity=".35" points="4 61 4 57 0 61"/>
<polygon fill="#000000" fill-opacity=".35" points="57 4.001 61 4.001 61 0"/>
</g>
</svg>
Looks much better than:
<svg
*ngIf="!small"
xmlns="http://www.w3.org/2000/svg"
width="111"
height="111"
viewBox="0 0 111 111"
>
<g
fill="none"
fill-rule="evenodd"
transform="scale(1.819672131)"
>
<polygon
class="primary"
fill="#29AAE1"
points="38 0 0 38 0 61 4 61 4 57 57.002 3.996 61 4 60.998 0"
></polygon>
<polygon
fill="#000000"
fill-opacity=".35"
points="4 61 4 57 0 61"
></polygon>
<polygon
fill="#000000"
fill-opacity=".35"
points="57 4.001 61 4.001 61 0"
></polygon>
</g>
</svg>
It really all depends though, right? Which HTML fragment is clearer? <form class="myForm" method="get" action="/html/codes/html_form_handler.cfm">
<p>
<label>Name
<input type="text" name="customer_name" required>
</label>
</p>
<p>
<label>Phone
<input type="tel" name="phone_number">
</label>
</p>
<p>
<label>Email
<input type="email" name="email_address">
</label>
</p>
<fieldset>
<legend>Which taxi do you require?</legend>
<p><label> <input type="radio" name="taxi" required value="car"> Car </label></p>
<p><label> <input type="radio" name="taxi" required value="van"> Van </label></p>
<p><label> <input type="radio" name="taxi" required value="tuktuk"> Tuk Tuk </label></p>
</fieldset>
<fieldset>
<legend>Extras</legend>
<p><label> <input type="checkbox" name="extras" value="baby"> Baby Seat </label></p>
<p><label> <input type="checkbox" name="extras" value="wheelchair"> Wheelchair Access </label></p>
<p><label> <input type="checkbox" name="extras" value="tip"> Stock Tip </label></p>
</fieldset>
</form> or <form
class="myForm"
method="get"
action="/html/codes/html_form_handler.cfm"
>
<p>
<label>
Name
<input
type="text"
name="customer_name"
required
>
</label>
</p>
<p>
<label>
Phone
<input
type="tel"
name="phone_number"
>
</label>
</p>
<p>
<label>
Email
<input
type="email"
name="email_address"
>
</label>
</p>
<fieldset>
<legend>Which taxi do you require?</legend>
<p>
<label>
<input
type="radio"
name="taxi"
required
value="car"
>
Car
</label>
</p>
<p>
<label>
<input
type="radio"
name="taxi"
required
value="van"
>
Van
</label>
</p>
<p>
<label>
<input
type="radio"
name="taxi"
required
value="tuktuk"
>
Tuk Tuk
</label>
</p>
</fieldset>
<fieldset>
<legend>Extras</legend>
<p>
<label>
<input
type="checkbox"
name="extras"
value="baby"
>
Baby Seat
</label>
</p>
<p>
<label>
<input
type="checkbox"
name="extras"
value="wheelchair"
>
Wheelchair Access
</label>
</p>
<p>
<label>
<input
type="checkbox"
name="extras"
value="tip"
>
Stock Tip
</label>
</p>
</fieldset>
</form> Or which SVG? <svg class="fill crisp" xmlns="http://www.w3.org/2000/svg">
<g class="axis">
<rect class="axis-line" [attr.x]="plot.left" [attr.y]="svg.h - plot.bottom" height="1" [attr.width]="svg.w - plot.left - plot.right"></rect>
<rect *ngFor="let tick of xTicks" class="axis-tick" x="0" y="0" height="10" width="1" attr.transform="translate({{plot.left + (svg.w - plot.left - plot.right) * tick.x}} {{svg.h - plot.bottom}})"></rect>
</g>
<g class="axis">
<rect class="axis-line" x="70" y="10" [attr.height]="svg.h - 40" width="1"></rect>
<rect *ngFor="let tick of yTicks" class="axis-tick" x="0" y="0" height="1" width="10" attr.transform="translate({{plot.left - 10}} {{svg.h - plot.bottom - (svg.h - plot.bottom - plot.top) * tick}})"></rect>
</g>
</svg> <svg
class="fill crisp"
xmlns="http://www.w3.org/2000/svg"
>
<g class="axis">
<rect
class="axis-line"
[attr.x]="plot.left"
[attr.y]="svg.h - plot.bottom"
height="1"
[attr.width]="svg.w - plot.left - plot.right"
></rect>
<rect
*ngFor="let tick of xTicks"
class="axis-tick"
x="0"
y="0"
height="10"
width="1"
attr.transform="translate({{plot.left + (svg.w - plot.left - plot.right) * tick.x}} {{svg.h - plot.bottom}})"
></rect>
</g>
<g class="axis">
<rect
class="axis-line"
x="70"
y="10"
[attr.height]="svg.h - 40"
width="1"
></rect>
<rect
*ngFor="let tick of yTicks"
class="axis-tick"
x="0"
y="0"
height="1"
width="10"
attr.transform="translate({{plot.left - 10}} {{svg.h - plot.bottom - (svg.h - plot.bottom - plot.top) * tick}})"
></rect>
</g>
</svg> Conventionally, formatters have a maximum line length and then add lines breaks only when that is exceeded. angular-template-formatter has a simpler algorithm of a line break per attribute. Since Angular templates tend to have longish attributes, this works out pretty well. But if that assumption doesn't hold true, then the result looks comparatively poor, whether HTML or SVG. |
I guess every time I've used an inline svg it has been used like a static image. If you are using angular features to make it dynamic then you benefit from the formatting. |
You should keep the svg-prefix for the next reason:
|
SVGs were not being formatted.