View the source of the running application
In your CGI::Application based class
use CGI::Application::Plugin::ViewCode;
Then you can view your module's source (or pod) as it's running by changing the url
?rm=view_code ?rm=view_code#215 ?rm=view_code&pod=0&line_no=0 ?rm=view_code&module=CGI-Application
?rm=view_pod ?rm=view_pod&module=CGI-Application
This plugin works by adding extra run modes (named \*(C`view_code\*(C' and \*(C` view_pod \*(C') to the application. By calling this run mode you can see the source or \s-1POD\s0 of the running module (by default) or you can specify which module you would like to view (see \s-1SECURITY\s0).
This extra run mode will accept the following arguments in the query string:
The name of the module to view. By default it is the module currently being run. Also, since colons (':') aren't simply typed into \s-1URL\s0's, you can just substitute '-' for '::'. ?rm=view_code?module=My-Base-Class
Boolean indicates whether syntax highlighting (using Syntax::Highlight::Perl::Improved) is \*(C`on\*(C' or \*(C`off\*(C'. By default it is \*(C`on\*(C'.
Boolean indicates whether the viewing of line numbers is \*(C`on\*(C' or \*(C`off\*(C'. By default it is \*(C`on\*(C'. It \*(C`line_no\*(C' is on, you can also specify which line number you want to see by adding an anchor to the link: ?rm=view_code#215 This will take you immediately to line 215 of the current application module.
Boolean indicates whether \s-1POD\s0 is seen or not. By default it is seen>.
This extra run mode will accept the following arguments in the query string:
The name of the module to view. By default it is the module currently being run. Also, since colons (':') aren't simply typed into \s-1URL\s0's, you can just substitute '-' for '::'. ?rm=view_pod?module=My-Base-Class
This plugin can be used in conjunction with CGI::Application::Plugin::DevPopup. If we detect that CGI::Application::Plugin::DevPopup is running and turned on, we will create a sub-report that includes the highlighted source code.
So you can simply do the following:
BEGIN { $ENV{CAP_DEVPOPUP_EXEC} = 1; } # turn it on for real use CGI::Application::Plugin::DevPopup; use CGI::Application::Plugin::ViewCode;
Befault, this report will be the same thing produced by \*(C`view_code\*(C'. If you want this report to include the \*(C`view_pod\*(C' report, simply set the the $ENV{CAP_VIEWCODE_POPUP_POD} to true. You can also turn off the \*(C`view_code\*(C' report but setting $ENV{CAP_VIEWCODE_POPUP_CODE} to false.
# have the POD report, but not the code in the dev popup window BEGIN { $ENV{CAP_DEVPOPUP_EXEC} = 1; # turn it on for real $ENV{CAP_VIEWCODE_POPUP_POD} = 1; # turn on POD report $ENV{CAP_VIEWCODE_POPUP_CODE} = 0; # turn off code report } use CGI::Application::Plugin::DevPopup; use CGI::Application::Plugin::ViewCode;
This plugin is designed to be used for development only. Please do not use it in a production system as it will allow anyone to see the source code for any loaded module. Consider yourself warned.
Michael Peters, \*(C`<[email protected]>\*(C'
Please report any bugs or feature requests to \*(C`[email protected]\*(C', or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CGI-Application-Plugin-ViewCode <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=CGI-Application-Plugin-ViewCode>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
Copyright 2005 Michael Peters, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.