From 559191c65ec075d24e378643518e2918c5e56945 Mon Sep 17 00:00:00 2001 From: Dustin Swan Date: Mon, 9 Feb 2026 14:04:26 -0700 Subject: [PATCH] still don't have modules. instead will load all source in /cg/ dir, in alpha filename order --- src/cg/{stdlib.cg => 01-stdlib.cg} | 0 .../{design-tokens.cg => 02-design-tokens.cg} | 0 .../{ui-components.cg => 03-ui-components.cg} | 0 src/cg/{test.cg => 04-test.cg} | 4 +- src/cg/{os.cg => 10-os.cg} | 0 src/cg/textinput-test.cg | 46 ------------------- src/compiler.ts | 2 +- src/main.ts | 14 ++---- 8 files changed, 8 insertions(+), 58 deletions(-) rename src/cg/{stdlib.cg => 01-stdlib.cg} (100%) rename src/cg/{design-tokens.cg => 02-design-tokens.cg} (100%) rename src/cg/{ui-components.cg => 03-ui-components.cg} (100%) rename src/cg/{test.cg => 04-test.cg} (97%) rename src/cg/{os.cg => 10-os.cg} (100%) delete mode 100644 src/cg/textinput-test.cg diff --git a/src/cg/stdlib.cg b/src/cg/01-stdlib.cg similarity index 100% rename from src/cg/stdlib.cg rename to src/cg/01-stdlib.cg diff --git a/src/cg/design-tokens.cg b/src/cg/02-design-tokens.cg similarity index 100% rename from src/cg/design-tokens.cg rename to src/cg/02-design-tokens.cg diff --git a/src/cg/ui-components.cg b/src/cg/03-ui-components.cg similarity index 100% rename from src/cg/ui-components.cg rename to src/cg/03-ui-components.cg diff --git a/src/cg/test.cg b/src/cg/04-test.cg similarity index 97% rename from src/cg/test.cg rename to src/cg/04-test.cg index cc785f8..6b6cc40 100644 --- a/src/cg/test.cg +++ b/src/cg/04-test.cg @@ -23,7 +23,7 @@ flattened = flatten [[1, 2, 3], [4, 5, 6]]; contains3 = contains 3 list; findEven = find isEven list; -{ +stdlibTestResult = { filtered = filtered, summed = summed, listLen = listLen, @@ -40,4 +40,4 @@ findEven = find isEven list; flattened = flattened, contains3 = contains3, findEven = findEven -} +}; diff --git a/src/cg/os.cg b/src/cg/10-os.cg similarity index 100% rename from src/cg/os.cg rename to src/cg/10-os.cg diff --git a/src/cg/textinput-test.cg b/src/cg/textinput-test.cg deleted file mode 100644 index d871575..0000000 --- a/src/cg/textinput-test.cg +++ /dev/null @@ -1,46 +0,0 @@ -init = {}; - -testApp = { - email = "", - password = "", - combinedText = email & " " & password -}; - -update = state event \ event - | _ \ state; - -view = state viewport \ - Positioned { - x = 30, - y = 30, - child = Column { - gap = 10, - children = [ - textInput { - key = "email", - initialValue = testApp.email, - initialFocus = True, - w = 300, - h = 40, - onChange = text \ testApp.email := text - }, - textInput { - key = "password", - initialValue = testApp.password, - initialFocus = False, - w = 300, - h = 40, - onChange = text \ testApp.password := text - }, - Text { content = "Username: " & testApp.email, x = 8, y = 16 }, - Text { content = "Password: " & testApp.password, x = 8, y = 16 }, - Text { content = "Combined: " & testApp.combinedText, x = 8, y = 16 }, - Column { - gap = 10, - children = map (t \ Text { content = t, x = 8, y = 16 }) (storeSearch "") - } - ] - } - }; - -os = { init = init, update = update, view = view } diff --git a/src/compiler.ts b/src/compiler.ts index 0d7402a..1952ad3 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1,7 +1,7 @@ import type { AST, Pattern, Definition } from './ast'; import { _rt, store } from './runtime-js'; -const definitions: Map = new Map(); +export const definitions: Map = new Map(); const dependencies: Map> = new Map(); const dependents: Map> = new Map(); diff --git a/src/main.ts b/src/main.ts index 682a4fa..c8da7c8 100644 --- a/src/main.ts +++ b/src/main.ts @@ -4,19 +4,15 @@ import { Parser } from './parser' import { runAppCompiled } from './runtime-compiled' import { _rt } from './runtime-js' -import stdlibCode from './cg/stdlib.cg?raw'; -import designTokensCode from './cg/design-tokens.cg?raw'; -import uiComponentsCode from './cg/ui-components.cg?raw'; -import osCode from './cg/os.cg?raw'; +const modules = import.meta.glob('./cg/*.cg', { as: 'raw', eager: true }); +const cgCode = Object.keys(modules) + .sort() + .map(key => modules[key]) + .join('\n'); const canvas = document.createElement('canvas') as HTMLCanvasElement; document.body.appendChild(canvas); -const cgCode = stdlibCode + '\n' + - designTokensCode + '\n' + - uiComponentsCode + '\n' + - osCode + '\n' - try { const tokens = tokenize(cgCode); const parser = new Parser(tokens, cgCode);