projects
/
liburi-template-perl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'upstream/0.21'
[liburi-template-perl.git]
/
lib
/
URI
/
Template.pm
diff --git
a/lib/URI/Template.pm
b/lib/URI/Template.pm
index
edb1ce2
..
0069457
100644
(file)
--- a/
lib/URI/Template.pm
+++ b/
lib/URI/Template.pm
@@
-3,7
+3,7
@@
package URI::Template;
use strict;
use warnings;
use strict;
use warnings;
-our $VERSION = '0.2
0
';
+our $VERSION = '0.2
1
';
use URI;
use URI::Escape ();
use URI;
use URI::Escape ();
@@
-199,15
+199,16
@@
sub _tostring_path {
sub _study {
my ( $self ) = @_;
my @hunks = grep { defined && length } split /(\{.+?\})/, $self->template;
sub _study {
my ( $self ) = @_;
my @hunks = grep { defined && length } split /(\{.+?\})/, $self->template;
+ my $pos = 1;
for ( @hunks ) {
next unless /^\{(.+?)\}$/;
for ( @hunks ) {
next unless /^\{(.+?)\}$/;
- $_ = $self->_compile_expansion( $1 );
+ $_ = $self->_compile_expansion( $1
, $pos++
);
}
$self->{ studied } = \@hunks;
}
sub _compile_expansion {
}
$self->{ studied } = \@hunks;
}
sub _compile_expansion {
- my ( $self, $str ) = @_;
+ my ( $self, $str
, $pos
) = @_;
my %exp = ( op => '', vars => [], str => $str );
if ( $str =~ /^([+#.\/;?&|!\@])(.+)/ ) {
my %exp = ( op => '', vars => [], str => $str );
if ( $str =~ /^([+#.\/;?&|!\@])(.+)/ ) {
@@
-234,7
+235,7
@@
sub _compile_expansion {
# remove "optional" flag (for opensearch compatibility)
$var{ name } =~ s{\?$}{};
# remove "optional" flag (for opensearch compatibility)
$var{ name } =~ s{\?$}{};
- $self->{ _vars }->{ $var{ name } }
++
;
+ $self->{ _vars }->{ $var{ name } }
= $pos
;
push @{ $exp{ vars } }, \%var;
}
push @{ $exp{ vars } }, \%var;
}
@@
-302,7
+303,7
@@
sub template {
}
sub variables {
}
sub variables {
- return keys %{ $_[ 0 ]->{ _vars } };
+ return
sort {$_[ 0 ]->{ _vars }->{ $a } <=> $_[ 0 ]->{ _vars }->{ $b } }
keys %{ $_[ 0 ]->{ _vars } };
}
sub expansions {
}
sub expansions {
@@
-378,7
+379,7
@@
new template string.
=head2 variables
=head2 variables
-Returns an array of unique variable names found in the template
. NB: they are returned in random order
.
+Returns an array of unique variable names found in the template
(in the order of appearance)
.
=head2 expansions
=head2 expansions