class

Analyzer::Zig::Jetzig

Inherits Analyzer < FileHelper < Reference < Object

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 /<name> get -> GET /<name>/:id new -> GET /<name>/new edit -> GET /<name>/:id/edit post -> POST /<name> put -> PUT /<name>/:id patch -> PATCH /<name>/:id delete -> DELETE /<name>/:id

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.

Constants

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}"

Class methods

tech_name
Source

Instance methods

analyze
Source
tech

Instance-side view of the same declaration. The per-file rescues live on this base class, which has no way to name the analyzer that is running inside them, so a skipped file could not be attributed to a tech. Deriving it from analyzer_for keeps the name written exactly once.

Source