Add `async` and `await` token support to the Wren compiler with scheduler resolution logic, extend `Num` with `e` constant, hyperbolic trig, base conversion, and new methods (`isZero`, `gcd`, `lcm`, `digits`, etc.), extend `String` with `lower`, `upper`, `capitalize`, `title`, and regenerate `wren_core.wren.inc`. Include `Makefile` for multi-platform builds, rewrite `README.md` with updated build instructions, and add `example/await_demo.wren` and `example/jinja_markdown.wren` demonstrating new features.
61 lines
2.2 KiB
JavaScript
Vendored
61 lines
2.2 KiB
JavaScript
Vendored
// retoor <retoor@molodetz.nl>
|
|
|
|
import "tempfile" for TempFile, NamedTemporaryFile, TemporaryDirectory
|
|
import "pathlib" for Path
|
|
|
|
System.print("=== TempFile Module Demo ===\n")
|
|
|
|
System.print("--- Utility Functions ---")
|
|
System.print("Temp directory: %(TempFile.gettempdir())")
|
|
System.print("Temp prefix: %(TempFile.gettempprefix())")
|
|
|
|
System.print("\n--- mktemp (name only, no file created) ---")
|
|
var name = TempFile.mktemp(".txt", "demo_")
|
|
System.print("Generated name: %(name)")
|
|
System.print("File exists: %(Path.new(name).exists())")
|
|
|
|
System.print("\n--- mkstemp (creates file atomically) ---")
|
|
var path = TempFile.mkstemp(".dat", "demo_")
|
|
System.print("Created file: %(path)")
|
|
System.print("File exists: %(Path.new(path).exists())")
|
|
Path.new(path).unlink()
|
|
|
|
System.print("\n--- mkdtemp (creates directory) ---")
|
|
var dir = TempFile.mkdtemp("_work", "demo_")
|
|
System.print("Created directory: %(dir)")
|
|
System.print("Is directory: %(Path.new(dir).isDir())")
|
|
Path.new(dir).rmdir()
|
|
|
|
System.print("\n--- NamedTemporaryFile ---")
|
|
var tmp = NamedTemporaryFile.new(".txt", "demo_")
|
|
System.print("Temp file: %(tmp.name)")
|
|
tmp.write("Hello from tempfile module!")
|
|
System.print("Content: %(tmp.read())")
|
|
System.print("Auto-delete: %(tmp.delete)")
|
|
tmp.close()
|
|
System.print("Deleted after close: %(!(Path.new(tmp.name).exists()))")
|
|
|
|
System.print("\n--- NamedTemporaryFile.use (context manager) ---")
|
|
NamedTemporaryFile.new(".log").use {|f|
|
|
f.write("Log entry: operation completed")
|
|
System.print("Inside use block: %(f.read())")
|
|
}
|
|
System.print("Automatically cleaned up after use block")
|
|
|
|
System.print("\n--- TemporaryDirectory ---")
|
|
var tmpDir = TemporaryDirectory.new("_session", "demo_")
|
|
System.print("Temp dir: %(tmpDir.name)")
|
|
System.print("Is directory: %(tmpDir.path.isDir())")
|
|
tmpDir.cleanup()
|
|
System.print("Deleted after cleanup: %(!(Path.new(tmpDir.name).exists()))")
|
|
|
|
System.print("\n--- TemporaryDirectory.use (context manager) ---")
|
|
TemporaryDirectory.new().use {|d|
|
|
System.print("Working in: %(d.name)")
|
|
Path.new(d.name + "/data.txt").writeText("temporary data")
|
|
System.print("Created file inside temp dir")
|
|
}
|
|
System.print("Automatically cleaned up with all contents")
|
|
|
|
System.print("\n=== Done ===")
|