Skip to content

Commit dd56b7e

Browse files
committed
Added do-while loop functionality
1 parent 13e6ca8 commit dd56b7e

File tree

3 files changed

+112
-25
lines changed

3 files changed

+112
-25
lines changed

.vscode/settings.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"editor.fontFamily": "'Fira Code', 'consolas Fallback'"
3+
}

js/loops.js

+100-24
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,116 @@
1-
function loops() {
1+
function whileLoop() {
2+
if (doLoopCalled) {
3+
var statement = "while (";
4+
statement += getCondition(1);
5+
statement += ");\n";
6+
// add statement to program textarea
7+
programTextArea.executeEdits("", [
8+
{
9+
range: {
10+
startLineNumber: programTextArea.getPosition().lineNumber,
11+
startColumn: programTextArea.getPosition().column,
12+
endLineNumber: programTextArea.getPosition().lineNumber,
13+
endColumn: programTextArea.getPosition().column,
14+
},
15+
text: statement,
16+
forceMoveMarkers: true,
17+
},
18+
]);
19+
doLoopCalled=0;
220

3-
var statement = 'while ('; //statement variable contains the entire while-statement including the condition
4-
statement += getCondition(1); // get condition and append it to the statement
5-
statement += ') {\n\n'; // add closing paranthesis and braces to while loop
21+
autoIndent(); //implement indentation for closing brace
22+
} else {
23+
var statement = "while ("; //statement variable contains the entire while-statement including the condition
24+
statement += getCondition(1); // get condition and append it to the statement
25+
statement += ") {\n\n"; // add closing parenthesis and braces to while loop
26+
27+
// add statement to program textarea
28+
programTextArea.executeEdits("", [
29+
{
30+
range: {
31+
startLineNumber: programTextArea.getPosition().lineNumber,
32+
startColumn: programTextArea.getPosition().column,
33+
endLineNumber: programTextArea.getPosition().lineNumber,
34+
endColumn: programTextArea.getPosition().column,
35+
},
36+
text: statement,
37+
forceMoveMarkers: true,
38+
},
39+
]);
40+
41+
autoIndent(); //implement indentation for closing brace
42+
43+
//add closing brace to textarea
44+
programTextArea.executeEdits("", [
45+
{
46+
range: {
47+
startLineNumber: programTextArea.getPosition().lineNumber,
48+
startColumn: programTextArea.getPosition().column,
49+
endLineNumber: programTextArea.getPosition().lineNumber,
50+
endColumn: programTextArea.getPosition().column,
51+
},
52+
text: "}",
53+
forceMoveMarkers: true,
54+
},
55+
]);
56+
// set cursor to between the braces
57+
programTextArea.setPosition({
58+
lineNumber: programTextArea.getPosition().lineNumber - 1,
59+
column: programTextArea.getPosition().columnNumber + 2,
60+
});
61+
62+
indent++; // added new braces, hence increment indent
63+
autoIndent(); //call function to implement auto indent
64+
}
65+
66+
programTextArea.focus(); // focus cursor on textarea
67+
}
68+
69+
//do loop
70+
function doLoop() {
71+
var statement = "do {\n\n"; //Add parenthesis and opening brace to do loop
672

773
// add statement to program textarea
8-
programTextArea.executeEdits("", [{
9-
range: {
74+
programTextArea.executeEdits("", [
75+
{
76+
range: {
1077
startLineNumber: programTextArea.getPosition().lineNumber,
1178
startColumn: programTextArea.getPosition().column,
1279
endLineNumber: programTextArea.getPosition().lineNumber,
13-
endColumn: programTextArea.getPosition().column
80+
endColumn: programTextArea.getPosition().column,
81+
},
82+
text: statement,
83+
forceMoveMarkers: true,
1484
},
15-
text: statement,
16-
forceMoveMarkers: true
17-
}]);
85+
]);
1886

19-
autoIndent() //implement indentation for closing brace
87+
autoIndent(); //implement indentation for closing brace
2088

2189
//add closing brace to textarea
22-
programTextArea.executeEdits("", [{
23-
range: {
24-
startLineNumber: programTextArea.getPosition().lineNumber,
25-
startColumn: programTextArea.getPosition().column,
26-
endLineNumber: programTextArea.getPosition().lineNumber,
27-
endColumn: programTextArea.getPosition().column
28-
},
29-
text: '}',
30-
forceMoveMarkers: true
31-
}]);
90+
programTextArea.executeEdits("", [
91+
{
92+
range: {
93+
startLineNumber: programTextArea.getPosition().lineNumber,
94+
startColumn: programTextArea.getPosition().column,
95+
endLineNumber: programTextArea.getPosition().lineNumber,
96+
endColumn: programTextArea.getPosition().column,
97+
},
98+
text: "}",
99+
forceMoveMarkers: true,
100+
},
101+
]);
32102

33103
// set cursor to between the braces
34-
programTextArea.setPosition({lineNumber: programTextArea.getPosition().lineNumber - 1, column: programTextArea.getPosition().columnNumber + 2})
104+
programTextArea.setPosition({
105+
lineNumber: programTextArea.getPosition().lineNumber - 1,
106+
column: programTextArea.getPosition().columnNumber + 2,
107+
});
35108

36-
indent++ // added new braces, hence increment indent
37-
autoIndent() //call function to implement auto indent
109+
indent++; // added new braces, hence increment indent
110+
autoIndent(); //call function to implement auto indent
38111

39112
programTextArea.focus(); // focus cursor on textarea
40113
}
114+
115+
//IMPLEMENT FOR LOOP FUNCTIONALITY
116+
function forLoop() {}

js/voicerecog.js

+9-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var includeStatements;
1414
var variables = {}; //object containing variables that the user declares
1515
var splitWords = []; //word array for recognition
1616
var indent = 0; //indentation level, increment when adding braces
17+
var doLoopCalled = 0; //To check if a do-while loop is called
1718

1819

1920

@@ -55,7 +56,14 @@ recognition.onresult = function(event) {
5556
ifStatement();
5657
}
5758
if(splitWords[0] === 'while'){
58-
loops();
59+
whileLoop();
60+
}
61+
if(splitWords[0]==='do'){
62+
doLoop();
63+
doLoopCalled=1;
64+
}
65+
if(splitWords[0]==='for'){
66+
forLoop();
5967
}
6068
if(splitWords[0]=='out'){
6169
braceOut();

0 commit comments

Comments
 (0)