Mailing List Archive

svn commit: r1649037 - /perl/embperl/trunk/Embperl/Form/Control/select.pm
Author: richter
Date: Fri Jan 2 14:16:26 2015
New Revision: 1649037

URL: http://svn.apache.org/r1649037
Log:
Perfomance: Use perl instead of embedded Embperl for select control

Modified:
perl/embperl/trunk/Embperl/Form/Control/select.pm

Modified: perl/embperl/trunk/Embperl/Form/Control/select.pm
URL: http://svn.apache.org/viewvc/perl/embperl/trunk/Embperl/Form/Control/select.pm?rev=1649037&r1=1649036&r2=1649037&view=diff
==============================================================================
--- perl/embperl/trunk/Embperl/Form/Control/select.pm (original)
+++ perl/embperl/trunk/Embperl/Form/Control/select.pm Fri Jan 2 14:16:26 2015
@@ -18,13 +18,60 @@
package Embperl::Form::Control::select ;

use strict ;
-use vars qw{%fdat} ;
+use vars qw{%fdat $escmode} ;
use base 'Embperl::Form::ControlMultValue' ;

use Embperl::Inline ;
+#use HTML::Escape qw/escape_html/ ;

+sub escape_html
+ {
+ my $v = shift ;
+ $v =~ s/&/&/g ;
+ $v =~ s/"/"/g ;
+ $v =~ s/>/>/g ;
+ $v =~ s/</&lt;/g ;
+ return $v ;
+ }
+
+sub show_control
+ {
+ my ($self, $req, $filter) = @_ ;

+push @{$req -> {timing}}, ([Time::HiRes::gettimeofday], 'start show_control ' . $self->{name} . ' ' . __FILE__ . '#' . __LINE__) if ($req -> {timing});
+
+ my $name = $self -> {name} ;
+ $filter ||= $self -> {filter} ;
+ my $nsprefix = $self -> form -> {jsnamespace} ;
+ my $val ;
+ my $i = 0 ;
+ my ($values, $options) = $self -> get_all_values ($req) ;
+ my ($ctlattrs, $ctlid, $ctlname) = $self -> get_std_control_attr($req) ;
+ $values ||= [] ;
+
+ my $multiple = $self->{multiple}?'multiple':'' ;
+ my @opt ;
+ my $out = '<select name="' .escape_html ($ctlname) . '" ' . $ctlattrs ;
+ $out .= ' size="' . escape_html ($self->{rows}) . '" ' if ($self->{rows}) ;
+ $out .= ' _ef_attach="ef_select" ' if ($self -> {trigger}) ;
+ push @{$req -> {timing}}, ([Time::HiRes::gettimeofday], 'start show_control4 ' . $self->{name} . ' value: ' . scalar(@$values) . ' : ' . __FILE__ . '#' . __LINE__) if ($req -> {timing});
+ my $i = 0 ;
+ foreach $val (@$values)
+ {
+ my $escval = escape_html ($val) ;
+ my $escopt = escape_html ($options ->[$i]) ;
+ push @opt, qq{<option value="$escval">} . ($escopt) . q{</option>} if (!defined ($filter) || ($val =~ /$filter/i)) ;
+ $i++ ;
+ }
+ $out .= ">\n" . join ("\n", @opt) . "\n" . '</select>' . "\n" ;
+
+ local $escmode = 0 ;
+ print OUT $out ;
+
+push @{$req -> {timing}}, ([Time::HiRes::gettimeofday], 'end show_control ' . $self->{name} . ' ' . __FILE__ . '#' . __LINE__) if ($req -> {timing});

+ }
+
1 ;

__EMBPERL__
@@ -43,21 +90,27 @@ __EMBPERL__
# show_control - output the control
#]

-[.$ sub show_control ($self, $req, $filter)
+[.$ sub xshow_control ($self, $req, $filter)

my $name = $self -> {name} ;
$filter ||= $self -> {filter} ;
my $nsprefix = $self -> form -> {jsnamespace} ;
my $val ;
my $i = 0 ;
+push @{$req -> {timing}}, ([Time::HiRes::gettimeofday], 'start show_control ' . $self->{name} . ' ' . __FILE__ . '#' . __LINE__) if ($req -> {timing});
my ($values, $options) = $self -> get_all_values ($req) ;
+push @{$req -> {timing}}, ([Time::HiRes::gettimeofday], 'start show_control2 ' . $self->{name} . ' ' . __FILE__ . '#' . __LINE__) if ($req -> {timing});
my ($ctlattrs, $ctlid, $ctlname) = $self -> get_std_control_attr($req) ;
+push @{$req -> {timing}}, ([Time::HiRes::gettimeofday], 'start show_control3 ' . $self->{name} . ' ' . __FILE__ . '#' . __LINE__) if ($req -> {timing});
$values ||= [] ;
$]
<select name="[+ $ctlname +]" [+ $self->{multiple}?'multiple':''+] [.+ do { local $escmode = 0 ; $ctlattrs } +]
[$if ($self -> {rows}) $] size="[+ $self->{rows} +]" [$endif$]
[$if ($self -> {trigger}) $]_ef_attach="ef_select"[$endif$]
>
+[-
+push @{$req -> {timing}}, ([Time::HiRes::gettimeofday], 'start show_control4 ' . $self->{name} . ' value: ' . scalar(@$values) . ' : ' . __FILE__ . '#' . __LINE__) if ($req -> {timing});
+-]
[* $i = 0 ; *]
[$ foreach $val (@$values) $]
[$if !defined ($filter) || ($val =~ /$filter/i) $]
@@ -66,6 +119,9 @@ $]
[* $i++ ; *]
[$endforeach$]
</select>
+[-
+push @{$req -> {timing}}, ([Time::HiRes::gettimeofday], 'end show_control3 ' . $self->{name} . ' ' . __FILE__ . '#' . __LINE__) if ($req -> {timing});
+-]
[$endsub$]

__END__



---------------------------------------------------------------------
To unsubscribe, e-mail: embperl-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: embperl-cvs-help@perl.apache.org