1 |
+ |
package BuildSystem::TemplateStash; |
2 |
+ |
require 5.004; |
3 |
+ |
use Exporter; |
4 |
+ |
@ISA=qw(Exporter); |
5 |
+ |
|
6 |
+ |
sub new() |
7 |
+ |
{ |
8 |
+ |
my $class=shift; |
9 |
+ |
my $self={}; |
10 |
+ |
$self->{stash}[0]={}; |
11 |
+ |
$self->{index}=0; |
12 |
+ |
bless($self, $class); |
13 |
+ |
return $self; |
14 |
+ |
} |
15 |
+ |
|
16 |
+ |
sub pushstash () |
17 |
+ |
{ |
18 |
+ |
my $self=shift; |
19 |
+ |
push @{$self->{stash}},{}; |
20 |
+ |
$self->{index}=$self->{index}+1; |
21 |
+ |
} |
22 |
+ |
|
23 |
+ |
sub popstash () |
24 |
+ |
{ |
25 |
+ |
my $self=shift; |
26 |
+ |
if($self->{index}>0){pop @{$self->{stash}};$self->{index}=$self->{index}-1;} |
27 |
+ |
} |
28 |
+ |
|
29 |
+ |
sub stash() |
30 |
+ |
{ |
31 |
+ |
my $self=shift; |
32 |
+ |
my ($stash)=@_; |
33 |
+ |
if($stash) |
34 |
+ |
{ |
35 |
+ |
$self->{stash}=[]; |
36 |
+ |
$self->{stash}[0]=$stash; |
37 |
+ |
$self->{index}=0; |
38 |
+ |
} |
39 |
+ |
else{return $self;} |
40 |
+ |
} |
41 |
+ |
|
42 |
+ |
sub set() |
43 |
+ |
{ |
44 |
+ |
my $self=shift; |
45 |
+ |
my $key=shift || return; |
46 |
+ |
my $c=$self->{index}; |
47 |
+ |
$self->{stash}[$c]{$key}=shift; |
48 |
+ |
} |
49 |
+ |
|
50 |
+ |
sub get() |
51 |
+ |
{ |
52 |
+ |
my $self=shift; |
53 |
+ |
my $key=shift || return ""; |
54 |
+ |
my $c=$self->{index}; |
55 |
+ |
for(my $i=$c;$i>=0;$i--){if(exists $self->{stash}[$i]{$key}){return $self->{stash}[$i]{$key};}} |
56 |
+ |
return ""; |
57 |
+ |
} |
58 |
+ |
|
59 |
+ |
1; |