aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBen Burwell <ben.burwell@trifecta.com>2016-09-14 16:15:20 -0400
committerBen Burwell <ben.burwell@trifecta.com>2016-09-14 16:15:20 -0400
commitf704918fe2b187d715fe985ebffebdfbdc4b541f (patch)
tree9fc63b49b81ded84624bc6b1679015baffd7d292 /lib
parent2c1eee7b2a99985bbe92426368ea32360a4cc0b2 (diff)
Add repeat and input
Diffstat (limited to 'lib')
-rw-r--r--lib/doml.js33
-rw-r--r--lib/style.css68
2 files changed, 94 insertions, 7 deletions
diff --git a/lib/doml.js b/lib/doml.js
index c813db9..181f574 100644
--- a/lib/doml.js
+++ b/lib/doml.js
@@ -151,6 +151,23 @@
'call': function(dataset, children, context) {
return context[dataset.name](children);
+ },
+
+ 'repeat': function(dataset, children, context) {
+ var times = me.evaluate(children[0], context);
+ for (var n = 0; n < times; n++) {
+ if (dataset.iteration) {
+ context[dataset.iteration] = n;
+ }
+ me.evaluate(children[1], context);
+ }
+ },
+
+ 'input': function(dataset, children, context) {
+ var msg = dataset.prompt || dataset.name;
+ var rawInput = prompt(dataset.prompt);
+ context[dataset.name] = me.Types[dataset.type](rawInput);
+ return context[dataset.name];
}
};
@@ -176,6 +193,22 @@
'bin-op': function(e) {
return [ e.dataset.op ];
+ },
+
+ 'input': function(e) {
+ return [ e.dataset.name ];
+ },
+
+ 'call': function(e) {
+ return [ e.dataset.name ];
+ },
+
+ 'function': function(e) {
+ return [ e.dataset.args ];
+ },
+
+ 'repeat': function(e) {
+ return [ e.dataset.iteration ];
}
};
diff --git a/lib/style.css b/lib/style.css
index 6b7d25f..3f7ec40 100644
--- a/lib/style.css
+++ b/lib/style.css
@@ -1,3 +1,8 @@
+* {
+ margin: 0;
+ padding: 0;
+}
+
body {
font-family: monospace;
}
@@ -15,8 +20,7 @@ var {
}
.statement-sequence {
- display: block;
- border: 2px solid #666;
+ flex-direction: column;
}
.statement-sequence > span {
@@ -32,7 +36,7 @@ var {
.assign::before {
content: 'Variable Assignment';
- color: darkmagenta;
+ color: blueviolet;
order: 1;
}
@@ -68,7 +72,7 @@ var {
.while::before {
content: 'While';
- color: darkmagenta;
+ color: blueviolet;
}
.return > span {
@@ -77,13 +81,13 @@ var {
.return::after {
content: 'Return';
- color: darkmagenta;
+ color: blueviolet;
order: 1;
}
.compare::before {
content: 'Comparison';
- color: darkmagenta;
+ color: blueviolet;
order: 1;
}
@@ -105,7 +109,7 @@ var {
.branch::before {
content: 'Logical Branch';
- color: darkmagenta;
+ color: blueviolet;
}
.branch > span {
@@ -123,3 +127,53 @@ var {
.bin-op > var {
order: 2;
}
+
+.input {
+ color: blue;
+}
+
+.input::before {
+ content: 'Input';
+ color: blueviolet;
+}
+
+.call::before {
+ content: 'Function Call';
+ color: blueviolet;
+}
+
+.call > var {
+ font-weight: bold;
+ color: darkorange;
+ order: 1;
+}
+
+.call > span {
+ order: 2;
+}
+
+.function {
+ border: 4px solid darkorange;
+ margin: 3px;
+ flex-direction: column-reverse;
+ padding-left: 0;
+ padding-right: 0;
+ background-color: white;
+}
+
+.function > var {
+ background-color: darkorange;
+}
+
+.print {
+ background-color: greenyellow;
+}
+
+.repeat {
+ flex-direction: column;
+}
+
+.repeat::before {
+ content: 'Repeat';
+ color: blueviolet;
+}