Skip to content

Commit 2259f60

Browse files
committed
beautify web settings area; add alignComments setting
1 parent c78ac76 commit 2259f60

File tree

8 files changed

+148
-73
lines changed

8 files changed

+148
-73
lines changed

VHDLFormatter.js

Lines changed: 8 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

VHDLFormatter.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -285,11 +285,13 @@ export class signAlignSettings {
285285
isAll: boolean;
286286
mode: string;
287287
keyWords: Array<string>;
288-
constructor(isRegional: boolean, isAll: boolean, mode: string, keyWords: Array<string>) {
288+
alignComments: boolean;
289+
constructor(isRegional: boolean, isAll: boolean, mode: string, keyWords: Array<string>, alignComments: boolean = false) {
289290
this.isRegional = isRegional;
290291
this.isAll = isAll;
291292
this.mode = mode;
292293
this.keyWords = keyWords;
294+
this.alignComments = alignComments;
293295
}
294296
}
295297

@@ -391,7 +393,7 @@ export function beautify(input: string, settings: BeautifierSettings) {
391393
beautify3(arr, result, settings, 0, 0);
392394
var alignSettings = settings.SignAlignSettings;
393395
if (alignSettings != null && alignSettings.isAll) {
394-
AlignSigns(result, 0, result.length - 1, alignSettings.mode);
396+
AlignSigns(result, 0, result.length - 1, alignSettings.mode, alignSettings.alignComments);
395397
}
396398

397399
arr = FormattedLineToString(result, settings.Indentation);
@@ -543,19 +545,21 @@ export function beautifyPortGenericBlock(inputs: Array<string>, result: (Formatt
543545
&& alignSettings.keyWords != null
544546
&& alignSettings.keyWords.indexOf(mode) >= 0) {
545547
blockBodyStartIndex++;
546-
AlignSigns(result, blockBodyStartIndex, blockBodyEndIndex, alignSettings.mode);
548+
AlignSigns(result, blockBodyStartIndex, blockBodyEndIndex, alignSettings.mode, alignSettings.alignComments);
547549
}
548550
}
549551
return [i, parentEndIndex];
550552
}
551553

552-
export function AlignSigns(result: (FormattedLine | FormattedLine[])[], startIndex: number, endIndex: number, mode: string) {
554+
export function AlignSigns(result: (FormattedLine | FormattedLine[])[], startIndex: number, endIndex: number, mode: string, alignComments: boolean = false) {
553555
AlignSign_(result, startIndex, endIndex, ":", mode);
554556
AlignSign_(result, startIndex, endIndex, ":=", mode);
555557
AlignSign_(result, startIndex, endIndex, "<=", mode);
556558
AlignSign_(result, startIndex, endIndex, "=>", mode);
557559
AlignSign_(result, startIndex, endIndex, "direction", mode);
558-
AlignSign_(result, startIndex, endIndex, "@@comments", mode);
560+
if (alignComments) {
561+
AlignSign_(result, startIndex, endIndex, "@@comments", mode);
562+
}
559563
}
560564

561565
function indexOfGroup(regex: RegExp, input: string, group: number) {

index.html

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ <h2>VHDL Beautifier, Formatter</h2>
105105
</div>
106106
</form>
107107
<div class="hide" id="settings_div">
108-
<fieldset id="new_line_after_div">
108+
<fieldset id="new_line_after_div" style="text-align: right;">
109109
<legend>New line after</legend>
110110
<form id="new_line_after_then">
111111
<span class="code">THEN</span>
@@ -170,35 +170,44 @@ <h2>VHDL Beautifier, Formatter</h2>
170170
<input type="checkbox" id="check_alias">
171171
<label for="check_alias">Check ALIAS (all long names will be replaced by ALIAS names)</label>
172172
</div>
173-
<div id="sign_align_in_div">
174-
Align signs in
175-
<div class="checkbox inline" id="sign_align_port_div">
176-
<input type="checkbox" id="sign_align_port">
177-
<label for="sign_align_port" class="code">PORT()</label>
173+
<fieldset id="align_settings_div">
174+
<legend>Sign Alignment</legend>
175+
<div id="sign_align_in_div">
176+
Align signs in
177+
<div class="checkbox inline" id="sign_align_port_div">
178+
<input type="checkbox" id="sign_align_port" onclick="alignAllSigns(false);">
179+
<label for="sign_align_port" class="code">PORT()</label>
180+
</div>
181+
<div class="checkbox inline" id="sign_align_generic_div">
182+
<input type="checkbox" id="sign_align_generic" onclick="alignAllSigns(false);">
183+
<label for="sign_align_generic" class="code">GENERIC()</label></div>
184+
<div class="checkbox inline" id="sign_align_procedure_div">
185+
<input type="checkbox" id="sign_align_procedure" onclick="alignAllSigns(false);">
186+
<label for="sign_align_procedure" class="code">PROCEDURE()</label>
187+
</div>
188+
<div class="checkbox inline" id="sign_align_function_div">
189+
<input type="checkbox" id="sign_align_function" onclick="alignAllSigns(false);">
190+
<label for="sign_align_function" class="code">FUNCTION()</label>
191+
</div>
178192
</div>
179-
<div class="checkbox inline" id="sign_align_generic_div">
180-
<input type="checkbox" id="sign_align_generic">
181-
<label for="sign_align_generic" class="code">GENERIC()</label></div>
182-
<div class="checkbox inline" id="sign_align_procedure_div">
183-
<input type="checkbox" id="sign_align_procedure">
184-
<label for="sign_align_procedure" class="code">PROCEDURE()</label>
193+
<div class="checkbox inline" id="sign_align_all_div">
194+
<input type="checkbox" id="sign_align_all" onclick="alignAllSigns(true);">
195+
<label for="sign_align_all">Align signs in all places</label>
185196
</div>
186-
<div class="checkbox inline" id="sign_align_function_div">
187-
<input type="checkbox" id="sign_align_function">
188-
<label for="sign_align_function" class="code">FUNCTION()</label>
197+
<form class="inline" id="sign_align_mode_div">
198+
<span> | Mode: </span>
199+
<label>
200+
<input type="radio" name="sign_align_modecase" value="local">Local</label>
201+
<label>
202+
<input type="radio" name="sign_align_modecase" value="global">Global</label>
203+
</form>
204+
<div>
205+
<div class="checkbox inline" id="align_comments_div">
206+
<input type="checkbox" id="align_comments">
207+
<label for="align_comments">Align comments</label>
208+
</div>
189209
</div>
190-
</div>
191-
<div class="checkbox inline" id="sign_align_all_div">
192-
<input type="checkbox" id="sign_align_all">
193-
<label for="sign_align_all">Align signs in all places</label>
194-
</div>
195-
<form class="inline" id="sign_align_mode_div">
196-
<span>Mode: </span>
197-
<label>
198-
<input type="radio" name="sign_align_modecase" value="local">Local</label>
199-
<label>
200-
<input type="radio" name="sign_align_modecase" value="global">Global</label>
201-
</form>
210+
</fieldset>
202211
<div id="customise_indentation_div">
203212
<div class="checkbox inline" id="use_space_div">
204213
<input type="checkbox" id="use_space">
@@ -343,6 +352,7 @@ <h2>VHDL Beautifier, Formatter</h2>
343352
}
344353
document.getElementById("sign_align_all").checked = alignSettings.isAll;
345354
document.getElementById("sign_align_mode_div").elements.namedItem("sign_align_modecase").value = alignSettings.mode;
355+
document.getElementById("align_comments").checked = alignSettings.alignComments;
346356
}
347357
var newLineSettings = beautifierSettings.NewLineSettings;
348358
var newLineAfter = newLineSettings.newLineAfter;
@@ -431,6 +441,7 @@ <h2>VHDL Beautifier, Formatter</h2>
431441
var sign_align_procedure = document.getElementById("sign_align_procedure").checked;
432442
var sign_align_generic = document.getElementById("sign_align_generic").checked;
433443
var sign_align_all = document.getElementById("sign_align_all").checked;
444+
var align_comments = document.getElementById("align_comments").checked;
434445
var sign_align_mode = document.getElementById("sign_align_mode_div").elements.namedItem("sign_align_modecase").value;
435446
var new_line_after_port = document.getElementById("new_line_after_port").elements.namedItem("new_line_after_portcase").value;
436447
var new_line_after_then = document.getElementById("new_line_after_then").elements.namedItem("new_line_after_thencase").value;
@@ -480,7 +491,7 @@ <h2>VHDL Beautifier, Formatter</h2>
480491
signAlignKeywords.push("PROCEDURE");
481492
}
482493
sign_align = signAlignKeywords.length > 0;
483-
let alignSettings = new signAlignSettings(sign_align, sign_align_all, sign_align_mode, signAlignKeywords)
494+
let alignSettings = new signAlignSettings(sign_align, sign_align_all, sign_align_mode, signAlignKeywords, align_comments)
484495

485496
beautifierSettings = new BeautifierSettings(remove_comments, remove_report, check_alias,
486497
alignSettings,

main.js

Lines changed: 33 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

main.ts

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,28 +18,34 @@ function noFormat() {
1818
"cust_eol",
1919
"sign_align_mode",
2020
"keyword",
21-
"typename"
21+
"typename",
22+
"align_comments",
23+
"add_extraEOL"
2224
];
2325
var isDisabled = getHTMLInputElement("no_format").checked;
26+
changeStateOfElements(elements, isDisabled);
27+
let radioButtons = <HTMLCollectionOf<HTMLInputElement>>document.getElementsByTagName("input");
28+
for (let i = 0; i < radioButtons.length; i++) {
29+
if ((<HTMLInputElement>radioButtons[i]).type == "radio") {
30+
(<HTMLInputElement>radioButtons[i]).disabled = isDisabled;
31+
}
32+
}
33+
}
34+
35+
function changeStateOfElements(elements: string[], isDisabled: boolean) {
2436
elements.forEach(element => {
2537
var htmlElement = getHTMLInputElement(element + "_div");
2638
try {
2739
getHTMLInputElement(element).disabled = isDisabled;
2840
}
29-
catch{ }
41+
catch { }
3042
if (isDisabled) {
3143
htmlElement.className += " disabled";
3244
}
3345
else {
3446
htmlElement.className = htmlElement.className.replace(/\bdisabled\b/g, "");
3547
}
3648
});
37-
let radioButtons = <HTMLCollectionOf<HTMLInputElement>>document.getElementsByTagName("input");
38-
for (let i = 0; i < radioButtons.length; i++) {
39-
if ((<HTMLInputElement>radioButtons[i]).type == "radio") {
40-
(<HTMLInputElement>radioButtons[i]).disabled = isDisabled;
41-
}
42-
}
4349
}
4450

4551
function getHTMLInputElement(id: string): HTMLInputElement {
@@ -66,10 +72,31 @@ function MixLetters(input: string) {
6672
}
6773

6874
function wordWrap() {
69-
var d = document.getElementById("result");
75+
let d = getHTMLInputElement("result");
7076
if (d.className == "") {
7177
d.className = "wordwrap";
7278
} else {
7379
d.className = "";
7480
}
81+
}
82+
83+
function alignAllSigns(alignAll: boolean) {
84+
if (alignAll) {
85+
getHTMLInputElement("sign_align_port").checked = false;
86+
getHTMLInputElement("sign_align_generic").checked = false;
87+
getHTMLInputElement("sign_align_procedure").checked = false;
88+
getHTMLInputElement("sign_align_function").checked = false;
89+
getHTMLInputElement("sign_align_mode_div").disabled = false;
90+
}
91+
else {
92+
getHTMLInputElement("sign_align_all").checked = false;
93+
}
94+
let isDisabled = !alignAll;
95+
changeStateOfElements(["sign_align_mode"], isDisabled);
96+
let radioButtons = document.querySelectorAll("#sign_align_mode_div input[type=radio]");
97+
for (let i = 0; i < radioButtons.length; i++) {
98+
if ((<HTMLInputElement>radioButtons[i]).type == "radio") {
99+
(<HTMLInputElement>radioButtons[i]).disabled = isDisabled;
100+
}
101+
}
75102
}

style.css

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,16 +120,16 @@ li {
120120

121121
fieldset {
122122
width: fit-content;
123-
border: 1px solid #9a9a9a;
123+
border: 1px solid #ccc;
124124
margin: 25px 0 5px 0;
125-
padding-left: 0;
125+
padding: 5px;
126126
}
127127

128128
legend {
129129
padding: 2px 5px;
130-
background-color: #e0e0e0;
130+
background-color: #ccc;
131131
border-radius: 2px;
132-
margin: -27px 0 0 -1px;
132+
margin: -27px 0 0 -6px;
133133
position: absolute;
134134
}
135135

@@ -182,9 +182,7 @@ form {
182182
}
183183

184184
form span {
185-
width: 170px;
186185
display: inline-block;
187-
text-align: right;
188186
}
189187

190188
a {

0 commit comments

Comments
 (0)