class
Analyzer::Perl::Mojolicious
Defined in:
analyzer/analyzers/perl/mojolicious.crConstant Summary
-
ANGLE_PLACEHOLDER_RE =
/<([:#*]?)([A-Za-z_]\w*)(?::[^<>]*)?>/ -
Mojolicious angle-bracket placeholders:
<id>,<:id>,<#id>,<*id>, and the type-constrained<id:num>/<id:[^/]+>. Normalize them to the sigil form (:id,#id,*id) so URLs read consistently and the path-param scanner picks them up. -
ASSIGNMENT_HEAD_RE =
/^\s*(?:my|our|local)?\s*\$([A-Za-z_]\w*)\s*=\s*(.+)$/ -
CHAIN_RECEIVER_RE =
/\$([A-Za-z_]\w*)\s*->/ -
FULL_ANY_RE =
/->\s*any\s*\(\s*(?:\[([^\]]+)\]\s*,?\s*=?>?\s*)?['"]([^'"]*)['"]/ -
FULL_ROUTE_RE =
/->\s*route\s*\(\s*['"]([^'"]*)['"]\s*\)(?:\s*->\s*via\s*\(\s*([^)]+)\))?/ -
FULL_VERB_RE =
/->\s*(get|post|put|patch|delete|del|options|head|websocket)\s*\(\s*['"]([^'"]*)['"]/ -
Leaf path may be empty (
$r->get('')) — a Mojolicious idiom for a route that is its receiver's prefix (e.g.$auth->get('')), so the capture is[^'"]*rather than+. A bare$x->get(with no string argument (a data accessor like$backend->get($id)) still never matches because the leading quote is required. -
HTTP_VERBS =
["get", "post", "put", "delete", "patch", "options", "head"] of ::String -
LITE_ANY_RE =
/^\s*any\s+(?:\[([^\]]+)\]\s*=>\s*)?['"]([^'"]+)['"]/ -
LITE_VERB_RE =
/^\s*(get|post|put|patch|delete|del|options|head|websocket)\s+['"]([^'"]+)['"]/ -
NAMED_TO_ARG_PATTERNS =
{"controller" => /(?:^|[,\s])controller\s*=>\s*['"]([A-Za-z_][A-Za-z0-9_:\/-]*)['"]/, "action" => /(?:^|[,\s])action\s*=>\s*['"]([A-Za-z_][A-Za-z0-9_:\/-]*)['"]/} -
Crystal recompiles an interpolated regex literal on every evaluation (a full PCRE2 JIT compile). Only
controllerandactionare looked up, so precompile their matchers once at load time. -
PATH_VAR_RE =
/^\s*(?:my|our|local)?\s*\$([A-Za-z_]\w*)\s*=\s*(['"])(\/[^'"]*)\2\s*;?\s*$/ -
PREFIX_SEGMENT_RE =
/->\s*(?:under|any|route)\s*\(\s*(?:\[[^\]]+\]\s*,?\s*=?>?\s*)?(?:(['"])([^'"]*)\1|\$([A-Za-z_]\w*))/ -
A prefix-building segment (
->under/->any/->route) whose argument is either a quoted literal or a$varresolved againstpath_vars(a scalar holding a path string, e.g.my $p = '/tests/<id:num>'). -
PRELUDE_VAR_RE =
/\$([A-Za-z_]\w*)/
Instance Method Summary
- #analyze
- #analyze_content(content : String, file_path : String, include_callee : Bool = false, controller_callees : ControllerCalleeIndex = ControllerCalleeIndex.new) : Array(Endpoint)
- #analyze_file(path : String) : Array(Endpoint)
- #line_to_endpoints(line : String, var_prefix : Hash(String, String), path_vars : Hash(String, String)) : Array(Endpoint)
- #line_to_endpoints(line : String, var_prefix : Hash(String, String)) : Array(Endpoint)
- #line_to_endpoints(line : String) : Array(Endpoint)