class
Analyzer::Zig::Jetzig
- Analyzer::Zig::Jetzig
- Analyzer
- Reference
- Object
Overview
Jetzig uses filesystem-based "resourceful" routing (Rails-style). A view
file under src/app/views/<name>.zig is mounted at /<name>, and the
public function names inside it map to a fixed (HTTP method, URL-suffix)
table:
index -> GET /
root.zig is special-cased to /. The view function body is the request
handler, so its 1-hop calls are surfaced as callees and params.get("…")
reads become query parameters.
Defined in:
analyzer/analyzers/zig/jetzig.crConstant Summary
-
ACTION_FN_RE =
/(?:^|[^A-Za-z0-9_.])pub\s+fn\s+(index|get|new|edit|post|put|patch|delete)\s*\(/ -
ACTIONS =
{"index" => {"GET", "", false}, "get" => {"GET", "/:id", true}, "new" => {"GET", "/new", false}, "edit" => {"GET", "/:id/edit", true}, "post" => {"POST", "", false}, "put" => {"PUT", "/:id", true}, "patch" => {"PATCH", "/:id", true}, "delete" => {"DELETE", "/:id", true}} -
action => {http method, url suffix, has resource id}
-
CUSTOM_ROUTE_RE =
/\.\s*route\s*\(\s*\.\s*(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS|CONNECT|TRACE)\s*,\s*"(\/[^"]*)"\s*,\s*@import\s*\(\s*"([^"]+\.zig)"\s*\)\s*,\s*\.\s*(\w+)\s*\)/ -
Explicit custom route registered in the app's startup hook, e.g. app.route(.GET, "/api/products/:id", @import("app/api/products.zig"), .get); The view module lives outside
app/views/(so resourceful routing never sees it) and the action is named by the trailing.<action>enum literal. -
PARAM_GET_RE =
/\b(?:params|query)\s*\.\s*get\s*\(\s*"([^"]+)"/ -
VIEWS_MARKER =
"app#{File::SEPARATOR}views#{File::SEPARATOR}"