class
Analyzer::Perl::Dancer2
- Analyzer::Perl::Dancer2
- Analyzer::Perl::PerlEngine
- Analyzer
- Reference
- Object
Overview
Dancer2 route DSL analyzer.
Dancer2 (https://github.com/PerlDancer/Dancer2) exposes routes through
a keyword DSL exported by use Dancer2:
get '/' => sub { ... };
post '/users' => sub { ... };
del '/users/:id' => sub { ... }; # del, not delete
any ['get','post'] => '/feed' => sub { ... };
any '/all' => sub { ... }; # every HTTP verb
prefix '/api' => sub { # block-scoped prefix get '/status' => sub { ... }; # => /api/status }; prefix '/v2'; # procedural prefix get '/ping' => sub { ... }; # => /v2/ping
Route paths support named placeholders (:id, with optional type
constraints :id[Int]), splat (*) / megasplat (**) wildcards, and
regex routes (qr{...}). Handlers read input through the modern
accessors (route_parameters, query_parameters, body_parameters,
cookies, request->header, upload) as well as the legacy
param/params helpers.
Defined in:
analyzer/analyzers/perl/dancer2.crConstant Summary
-
ANY_BARE_RE =
/^\s*any\s+(['"])([^'"]*)\1/ -
ANY_LIST_RE =
/^\s*any\s*\[([^\]]*)\]\s*=>\s*(['"])([^'"]*)\2/ -
ANY_LIST_VERBS =
["get", "head", "post", "put", "del", "delete", "patch", "options"] of ::String -
Verb spellings accepted inside an
any [...]method list. Dancer2 normalizesdeltodeleteand registers HEAD alongside GET, so the arrayref form takes both the route-keyword spelling (del) and the HTTP-method spelling (delete,head). -
ANY_METHODS =
["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS", "HEAD"] of ::String -
CODEREF_RE =
/=>\s*\\&\s*([A-Za-z_]\w*)/ -
PREFIX_BLOCK_RE =
/^\s*prefix\s+(['"])([^'"]*)\1\s*=>\s*sub\b/ -
PREFIX_PROC_RE =
/^\s*prefix\s+(['"])([^'"]*)\1\s*;/ -
PREFIX_RESET_RE =
/^\s*prefix\s+(?:undef|''|""|'\/'|"\/")\s*;/ -
VERB_QR_RE =
/^\s*(get|post|put|patch|options|del)\s+qr\s*(?:\{([^}]*)\}|\/((?:[^\/\\]|\\.)*)\/|!([^!]*)!|#([^#]*)#|\(([^)]*)\))/ -
VERB_STRING_RE =
/^\s*(get|post|put|patch|options|del)\s+(['"])([^'"]*)\2/
Instance Method Summary
- #analyze
- #analyze_content(content : String, file_path : String, include_callee : Bool) : Array(Endpoint)
- #analyze_content(content : String, file_path : String) : Array(Endpoint)
- #analyze_file(path : String) : Array(Endpoint)