@@ -2,7 +2,7 @@ import init, { run_wasm } from './pkg/chen_lang.js';
22
33const examples = {
44 hello : `# Basic: Hello World
5- let io = import "stdlib/io"
5+ let io = import( "stdlib/io")
66let print = io.print
77let println = io.println
88
@@ -14,7 +14,7 @@ if a > 5 {
1414}
1515` ,
1616 if_else_if : `# Feature: Else If Chain
17- let io = import "stdlib/io"
17+ let io = import( "stdlib/io")
1818let println = io.println
1919
2020let score = 85
@@ -34,7 +34,7 @@ let grade = if score >= 90 { "A" } else if score >= 60 { "P" } else { "F" }
3434println("Grade result: " + grade)
3535` ,
3636 multiplication_table : `# Feature: for loop (9x9 Table)
37- let io = import "stdlib/io"
37+ let io = import( "stdlib/io")
3838let print = io.print
3939let println = io.println
4040
@@ -50,7 +50,7 @@ for i <= 9 {
5050}
5151` ,
5252 fib : `# Algorithm: Fibonacci
53- let io = import "stdlib/io"
53+ let io = import( "stdlib/io")
5454let println = io.println
5555
5656def fib(n) {
@@ -64,7 +64,7 @@ println("Fibonacci of 10 is:")
6464println(fib(10))
6565` ,
6666 objects : `# Pattern: Objects & Methods (Lua-style)
67- let io = import "stdlib/io"
67+ let io = import( "stdlib/io")
6868let println = io.println
6969
7070def Person(name) {
@@ -83,9 +83,37 @@ def Person(name) {
8383
8484let chen = Person("Chen")
8585chen:greet()
86+ ` ,
87+ metamethod_funcs : `# Advanced: Metamethod Functions
88+ let io = import("stdlib/io")
89+ let println = io.println
90+
91+ # Implement a "Strict Object" that throws on unknown access
92+ def create_strict_model(data) {
93+ let meta = \${
94+ # Intercept missing property lookup
95+ __index: def(obj, key) {
96+ println("Warning: Accessing undefined property '" + key + "'")
97+ return null
98+ },
99+ # Intercept new property assignment
100+ __newindex: def(obj, key, value) {
101+ println("Blocked: Settng new property '" + key + "' to " + value)
102+ }
103+ }
104+ set_meta(data, meta)
105+ return data
106+ }
107+
108+ let user = create_strict_model(\${ name: "Chen" })
109+
110+ println("Name: " + user.name)
111+ println("Age: " + user.age) # Triggers __index
112+
113+ user.score = 100 # Triggers __newindex
86114` ,
87115 inheritance : `# Pattern: Prototype Inheritance
88- let io = import "stdlib/io"
116+ let io = import( "stdlib/io")
89117let println = io.println
90118
91119# Base "Class"
@@ -127,7 +155,7 @@ dog:speak() # Inherited from Animal
127155dog:bark() # Defined in Dog
128156` ,
129157 point_objects : `# Pattern: Custom Objects (Point with methods and operators)
130- let io = import "stdlib/io"
158+ let io = import( "stdlib/io")
131159let println = io.println
132160
133161
@@ -199,9 +227,9 @@ println("p5_mul (overloaded *):")
199227println(p5_mul:to_string())
200228` ,
201229 date : `# StdLib: Date & Time
202- let io = import "stdlib/io"
203- let Date = import "stdlib/date"
204- let JSON = import "stdlib/json"
230+ let io = import( "stdlib/io")
231+ let Date = import( "stdlib/date")
232+ let JSON = import( "stdlib/json")
205233let println = io.println
206234
207235let now = Date:new()
@@ -211,8 +239,8 @@ println("Current time (ISO): " + now:format("%Y-%m-%d %H:%M:%S"))
211239println("As JSON: " + JSON.stringify(now))
212240` ,
213241 json : `# StdLib: JSON Processing
214- let io = import "stdlib/io"
215- let JSON = import "stdlib/json"
242+ let io = import( "stdlib/io")
243+ let JSON = import( "stdlib/json")
216244let println = io.println
217245
218246let data = \${
@@ -229,8 +257,8 @@ let parsed = JSON.parse(jsonStr)
229257println("Parsed JSON Name: " + parsed.name)
230258` ,
231259 arrays : `# StdLib: Arrays
232- let io = import "stdlib/io"
233- let JSON = import "stdlib/json"
260+ let io = import( "stdlib/io")
261+ let JSON = import( "stdlib/json")
234262let println = io.println
235263
236264# Arrays are dynamic list-like objects
@@ -247,7 +275,7 @@ arr:push("Mixed")
247275println(JSON.stringify(arr))
248276` ,
249277 closures : `# Feature: Closures
250- let io = import "stdlib/io"
278+ let io = import( "stdlib/io")
251279let println = io.println
252280
253281def make_counter(start) {
@@ -278,7 +306,7 @@ println("Counter 2: " + c2()) # 12
278306println("Counter 1 again: " + c1()) # 4
279307` ,
280308 async_task : `# Feature: Async/Await (Coroutines)
281- let io = import "stdlib/io"
309+ let io = import( "stdlib/io")
282310let println = io.println
283311
284312# Coroutines using 'coroutine.create' and 'coroutine.yield'.
@@ -316,9 +344,9 @@ println("Main result: " + result)
316344println("Generator status: " + coroutine.status(gen))
317345` ,
318346 async_http : `# Feature: Async HTTP Request
319- let http = import "stdlib/http"
320- let json = import "stdlib/json"
321- let println = import "stdlib/io".println
347+ let http = import( "stdlib/http")
348+ let json = import( "stdlib/json")
349+ let println = import( "stdlib/io") .println
322350
323351println("Sending request to httpbin.org...")
324352let url = "https://httpbin.org/anything"
@@ -329,9 +357,9 @@ let data = json.parse(resp.body)
329357println("Response JSON origin: " + data.origin)
330358` ,
331359 concurrent_http : `# Feature: Concurrent HTTP Requests
332- let http = import "stdlib/http"
333- let json = import "stdlib/json"
334- let println = import "stdlib/io".println
360+ let http = import( "stdlib/http")
361+ let json = import( "stdlib/json")
362+ let println = import( "stdlib/io") .println
335363
336364println("Starting concurrent HTTP requests...")
337365
@@ -366,7 +394,7 @@ println("Request 2 status: " + results[1])
366394println("Request 3 UUID: " + results[2])
367395` ,
368396 christmas_tree : `# Merry Christmas!
369- let println = import "stdlib/io".println
397+ let println = import( "stdlib/io") .println
370398
371399# Simple string repeat function
372400def repeat(str, count) {
0 commit comments