feat: add merge_all_wren utility, strutil demo, and 7 new API manual pages

Add WrenFileReader class in apps/merge_all_wren.wren for recursive .wren file discovery and content printing. Introduce example/strutil_demo.wren demonstrating case conversion, hex encoding, SHA256 hashing, string repetition, padding, HTML/JSON escaping, and URL encoding/decoding. Create manual/api pages for argparse, dataset, html, markdown, uuid, wdantic, and web modules. Update manual/api/index.html sidebar and module count from 21 to 28, adding links and cards for the new modules.
This commit is contained in:
2026-01-25 01:47:47 +00:00
parent 5a4054ec66
commit 74ef5cbc11
74 changed files with 7749 additions and 292 deletions
+58
View File
@@ -0,0 +1,58 @@
// retoor <retoor@molodetz.nl>
import "web" for View, Response, Request
class TestView is View {
construct new() {}
get(request) {
return Response.json({"method": "GET"})
}
post(request) {
return Response.json({"method": "POST"})
}
put(request) {
return Response.json({"method": "PUT"})
}
delete(request) {
return Response.json({"method": "DELETE"})
}
}
class GetOnlyView is View {
construct new() {}
get(request) {
return Response.text("GET only")
}
}
var mockGet = Request.new_("GET", "/test", {}, {}, "", {}, null)
var mockPost = Request.new_("POST", "/test", {}, {}, "", {}, null)
var mockPut = Request.new_("PUT", "/test", {}, {}, "", {}, null)
var mockDelete = Request.new_("DELETE", "/test", {}, {}, "", {}, null)
var mockPatch = Request.new_("PATCH", "/test", {}, {}, "", {}, null)
var view = TestView.new()
var r1 = view.dispatch(mockGet)
System.print(r1.body.contains("GET")) // expect: true
var r2 = view.dispatch(mockPost)
System.print(r2.body.contains("POST")) // expect: true
var r3 = view.dispatch(mockPut)
System.print(r3.body.contains("PUT")) // expect: true
var r4 = view.dispatch(mockDelete)
System.print(r4.body.contains("DELETE")) // expect: true
var getOnlyView = GetOnlyView.new()
var r5 = getOnlyView.dispatch(mockGet)
System.print(r5.body) // expect: GET only
var r6 = getOnlyView.dispatch(mockPost)
System.print(r6.status) // expect: 405