File Coverage

blib/lib/AxKit/XSP/AttrParam.pm
Criterion Covered Total %
statement 9 9 100.0
branch n/a
condition n/a
subroutine 3 3 100.0
pod n/a
total 12 12 100.0


line stmt bran cond sub pod time code
1              
2             ###
3             # AxKit XSP taglib for HTTP request parameters
4             # Robin Berjon
5             # 03/05/2001 - v.0.01
6             ###
7              
8             package AxKit::XSP::AttrParam;
9 1     1   577 use strict;
  1         2  
  1         28  
10 1     1   5 use vars qw($VERSION $NS $IN_NAME);
  1         1  
  1         71  
11             $VERSION = '0.01';
12              
13 1     1   4 use base qw(Apache::AxKit::Language::XSP);
  1         5  
  1         1537  
14              
15             # define the namespace we use (RDDL there one of these days)
16             $NS = 'http://xmlns.knowscape.com/xsp/AttrParam';
17             $IN_NAME = 0;
18              
19             #---> Parser subs <-------------------------------------------------#
20              
21             sub parse_start {
22             my $e = shift;
23             my $tag = shift;
24             my %attr = @_;
25              
26             my $code;
27             if ($tag eq 'param') {
28             $e->start_expr($tag);
29             $code = 'my $name; ';
30             if (exists $attr{name}) {
31             $attr{name} =~ s/"/\\"/;
32             $code .= '$name = "' . $attr{name} . '"; ';
33             }
34             }
35             elsif ($tag eq 'name') {
36             $IN_NAME = 1;
37             $code = '$name = "" ';
38             }
39             $e->append_to_script($code);
40              
41             return '';
42             }
43              
44             sub parse_end {
45             my $e = shift;
46             my $tag = shift;
47              
48             if ($tag eq 'param') {
49             $e->append_to_script('$cgi->param($name); ');
50             $e->end_expr();
51             }
52             elsif ($tag eq 'name') {
53             $e->append_to_script(';');
54             $IN_NAME = 0;
55             }
56             return '';
57             }
58              
59             sub parse_char {
60             return unless $IN_NAME;
61             my $e = shift;
62             my $txt = shift;
63              
64             $txt =~ s/"/\\"/;
65             $e->append_to_script(' . "' . $txt . '"');
66             return '';
67             }
68             sub parse_comment {}
69             sub parse_final {}
70              
71             1;
72              
73             #---> The End <-----------------------------------------------------#
74              
75             =pod
76              
77             =head1 NAME
78              
79             AxKit::XSP::AttrParam - XSP taglib for HTTP request parameters
80              
81             =head1 SYNOPSIS
82              
83             Add the aprm: namespace to your XSP C<> tag:
84              
85            
86             language='Perl'
87             xmlns:xsp='http://apache.org/xsp/core/v1'
88             xmlns:aprm='http://xmlns.knowscape.com/xsp/AttrParam'>
89              
90             And add the taglib to AxKit (via httpd.conf or .htaccess):
91              
92             AxAddXSPTaglib AxKit::XSP::AttrParam
93              
94             =head1 DESCRIPTION
95              
96             The XSP aprm: tag library implements a simple way to access HTTP
97             request parameters (query string and posted form data) by field name.
98             it is shamelessly stolen from Kip Hampton's AxKit::XSP::Param but
99             allows one to use parameter names that may not be valid XML names, as
100             well as parametre names derived from expressions.
101              
102             Thus, the B submitted from this text box
103              
104            
105              
106             is available after submitting the form either as
107              
108            
109              
110             or as
111              
112            
113             foo
114            
115              
116             or yet again (and more usefully)
117              
118            
119             $perl_that_returns_foo
120            
121              
122             =head2 Tag Reference
123              
124             There are no named functions for this tag library.
125              
126             =head1 ACKNOWLEDGEMENTS
127              
128             Special thanks to Matt and Kip from the entire Knowscape dev team.
129              
130             =head1 AUTHOR
131              
132             Robin Berjon,
133              
134             =head1 COPYRIGHT
135              
136             Copyright (c) 2001 Robin Berjon. All rights reserved. This program is
137             free software; you can redistribute it and/or modify it under the same
138             terms as Perl itself.
139              
140             =cut