NAME

App::Netdisco::Util::Web

DESCRIPTION

A set of helper subroutines to support parts of the Netdisco application.

There are no default exports, however the :all tag will export all subroutines.

EXPORT_OK

request_is_device

Client has requested device content under .../device or .../device/ports.

request_is_api

Client has requested JSON format data and an endpoint under /api.

request_is_api_report

Same as request_is_api but also requires path to start "/api/v1/report/...".

Same as request_is_api but also requires path to start "/api/v1/search/...".

sql_match( $value, $exact? )

Convert wildcard characters "*" and "?" to "%" and "_" respectively.

Pass a true value to $exact to only substitute the existing wildcards, and not also add "*" to each end of the value.

In list context, returns two values, the translated value, and also an SQL::Abstract LIKE clause.

sort_port( $a, $b )

Sort port names of various types used by device vendors. Interface is as Perl's own sort - two input args and an integer return value.

sort_modules( $modules )

Sort devices modules into tree hierarchy based upon position and parent - input arg is module list.

interval_to_daterange( $interval )

Takes an interval in days, weeks, months, or years in a format like '7 days' and returns a date range in the format 'YYYY-MM-DD to YYYY-MM-DD' by subtracting the interval from the current date.

If $interval is not passed, epoch zero (1970-01-01) is used as the start.

escape_for_script_context( $json )

Makes a JSON string safe to embed as a JavaScript literal inside an HTML <script> element, which is how the report and search templates ship their result sets. Returns anything that is not a defined plain scalar unchanged, so a resultset or an arrayref passed to a CSV or API template is left alone.

escape_results_token( $tokens )

Applies escape_for_script_context to the results token of a template token hash, in place, and returns the hash.

Only when the key is already there. The API serializer chooses between emitting results alone and walking the whole token hash on exists $tokens->{results}, and a handler that renders without that token, as node search does, needs the second. Assigning unconditionally would autovivify the key and silently move such a handler onto the first branch.