From d1c713fa2992102262652a0590a93292ce0e5893 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sun, 17 Mar 2024 02:29:48 +0100 Subject: [PATCH 1/4] make labeled statements look good on custom themes --- packages/codemirror/themes/algoboy.mjs | 1 + packages/codemirror/themes/blackscreen.mjs | 1 + packages/codemirror/themes/bluescreen.mjs | 1 + packages/codemirror/themes/strudel-theme.mjs | 1 + packages/codemirror/themes/teletext.mjs | 1 + packages/codemirror/themes/terminal.mjs | 1 + packages/codemirror/themes/whitescreen.mjs | 1 + 7 files changed, 7 insertions(+) diff --git a/packages/codemirror/themes/algoboy.mjs b/packages/codemirror/themes/algoboy.mjs index 399370e1..eba95b98 100644 --- a/packages/codemirror/themes/algoboy.mjs +++ b/packages/codemirror/themes/algoboy.mjs @@ -18,6 +18,7 @@ export default createTheme({ theme: 'light', settings, styles: [ + { tag: t.labelName, color: '#0f380f' }, { tag: t.keyword, color: '#0f380f' }, { tag: t.operator, color: '#0f380f' }, { tag: t.special(t.variableName), color: '#0f380f' }, diff --git a/packages/codemirror/themes/blackscreen.mjs b/packages/codemirror/themes/blackscreen.mjs index 135285a3..5671a6d8 100644 --- a/packages/codemirror/themes/blackscreen.mjs +++ b/packages/codemirror/themes/blackscreen.mjs @@ -15,6 +15,7 @@ export default createTheme({ theme: 'dark', settings, styles: [ + { tag: t.labelName, color: 'white' }, { tag: t.keyword, color: 'white' }, { tag: t.operator, color: 'white' }, { tag: t.special(t.variableName), color: 'white' }, diff --git a/packages/codemirror/themes/bluescreen.mjs b/packages/codemirror/themes/bluescreen.mjs index aa6489d6..eb04c411 100644 --- a/packages/codemirror/themes/bluescreen.mjs +++ b/packages/codemirror/themes/bluescreen.mjs @@ -18,6 +18,7 @@ export default createTheme({ theme: 'dark', settings, styles: [ + { tag: t.labelName, color: 'white' }, { tag: t.keyword, color: 'white' }, { tag: t.operator, color: 'white' }, { tag: t.special(t.variableName), color: 'white' }, diff --git a/packages/codemirror/themes/strudel-theme.mjs b/packages/codemirror/themes/strudel-theme.mjs index 4ae31060..4ec3ab92 100644 --- a/packages/codemirror/themes/strudel-theme.mjs +++ b/packages/codemirror/themes/strudel-theme.mjs @@ -15,6 +15,7 @@ export default createTheme({ gutterForeground: '#8a919966', }, styles: [ + { tag: t.labelName, color: '#89ddff' }, { tag: t.keyword, color: '#c792ea' }, { tag: t.operator, color: '#89ddff' }, { tag: t.special(t.variableName), color: '#eeffff' }, diff --git a/packages/codemirror/themes/teletext.mjs b/packages/codemirror/themes/teletext.mjs index 5fd9a557..ddbf7b33 100644 --- a/packages/codemirror/themes/teletext.mjs +++ b/packages/codemirror/themes/teletext.mjs @@ -27,6 +27,7 @@ export default createTheme({ theme: 'dark', settings, styles: [ + { tag: t.labelName, color: colorB }, { tag: t.keyword, color: colorA }, { tag: t.operator, color: mini }, { tag: t.special(t.variableName), color: colorA }, diff --git a/packages/codemirror/themes/terminal.mjs b/packages/codemirror/themes/terminal.mjs index 1374bb86..90c6e1d2 100644 --- a/packages/codemirror/themes/terminal.mjs +++ b/packages/codemirror/themes/terminal.mjs @@ -14,6 +14,7 @@ export default createTheme({ theme: 'dark', settings, styles: [ + { tag: t.labelName, color: '#41FF00' }, { tag: t.keyword, color: '#41FF00' }, { tag: t.operator, color: '#41FF00' }, { tag: t.special(t.variableName), color: '#41FF00' }, diff --git a/packages/codemirror/themes/whitescreen.mjs b/packages/codemirror/themes/whitescreen.mjs index 22abad9e..5abbb1ea 100644 --- a/packages/codemirror/themes/whitescreen.mjs +++ b/packages/codemirror/themes/whitescreen.mjs @@ -16,6 +16,7 @@ export default createTheme({ theme: 'light', settings, styles: [ + { tag: t.labelName, color: 'black' }, { tag: t.keyword, color: 'black' }, { tag: t.operator, color: 'black' }, { tag: t.special(t.variableName), color: 'black' }, From 6359bbe13917dc595a202a51935184f066efabe1 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sun, 17 Mar 2024 03:14:05 +0100 Subject: [PATCH 2/4] transpile label statements to p calls --- packages/transpiler/transpiler.mjs | 33 +++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/packages/transpiler/transpiler.mjs b/packages/transpiler/transpiler.mjs index 72f2e851..b4bd5d62 100644 --- a/packages/transpiler/transpiler.mjs +++ b/packages/transpiler/transpiler.mjs @@ -9,7 +9,7 @@ export function transpiler(input, options = {}) { let ast = parse(input, { ecmaVersion: 2022, allowAwaitOutsideFunction: true, - locations: true, + locations: false, }); let miniLocations = []; @@ -49,6 +49,9 @@ export function transpiler(input, options = {}) { if (isBareSamplesCall(node, parent)) { return this.replace(withAwait(node)); } + if (isLabelStatement(node)) { + return this.replace(labelToP(node)); + } }, leave(node, parent, prop, index) {}, }); @@ -132,3 +135,31 @@ function withAwait(node) { argument: node, }; } + +function isLabelStatement(node) { + return node.type === 'LabeledStatement'; +} + +function labelToP(node) { + return { + type: 'ExpressionStatement', + expression: { + type: 'CallExpression', + callee: { + type: 'MemberExpression', + object: node.body.expression, + property: { + type: 'Identifier', + name: 'p', + }, + }, + arguments: [ + { + type: 'Literal', + value: node.label.name, + raw: `'${node.label.name}'`, + }, + ], + }, + }; +} From a71a167133361f7c3ee9f899510c2f7c00160942 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sun, 17 Mar 2024 03:16:17 +0100 Subject: [PATCH 3/4] fix: enable locations again --- packages/transpiler/transpiler.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/transpiler/transpiler.mjs b/packages/transpiler/transpiler.mjs index b4bd5d62..e59cd6b2 100644 --- a/packages/transpiler/transpiler.mjs +++ b/packages/transpiler/transpiler.mjs @@ -9,7 +9,7 @@ export function transpiler(input, options = {}) { let ast = parse(input, { ecmaVersion: 2022, allowAwaitOutsideFunction: true, - locations: false, + locations: true, }); let miniLocations = []; From 2de18846b007aabcd58a34715518a9b9045fa9d4 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Sun, 17 Mar 2024 03:17:47 +0100 Subject: [PATCH 4/4] add comment --- packages/transpiler/transpiler.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/transpiler/transpiler.mjs b/packages/transpiler/transpiler.mjs index e59cd6b2..a49b353d 100644 --- a/packages/transpiler/transpiler.mjs +++ b/packages/transpiler/transpiler.mjs @@ -140,6 +140,8 @@ function isLabelStatement(node) { return node.type === 'LabeledStatement'; } +// converts label expressions to p calls: "x: y" to "y.p('x')" +// see https://github.com/tidalcycles/strudel/issues/990 function labelToP(node) { return { type: 'ExpressionStatement',