diff options
Diffstat (limited to 'lib/Config/Tree/Node/Section.pm')
-rw-r--r-- | lib/Config/Tree/Node/Section.pm | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/Config/Tree/Node/Section.pm b/lib/Config/Tree/Node/Section.pm new file mode 100644 index 0000000..833f5c5 --- /dev/null +++ b/lib/Config/Tree/Node/Section.pm | |||
@@ -0,0 +1,41 @@ | |||
1 | package Config::Tree::Node::Section; | ||
2 | use parent 'Config::Tree::Node'; | ||
3 | use strict; | ||
4 | use warnings; | ||
5 | |||
6 | sub new { | ||
7 | my $class = shift; | ||
8 | my $self = $class->SUPER::new(@_); | ||
9 | $self->{_subtree} = {}; | ||
10 | return $self; | ||
11 | } | ||
12 | |||
13 | sub subtree { | ||
14 | my $self = shift; | ||
15 | if (my $key = shift) { | ||
16 | if (my $val = shift) { | ||
17 | $self->{_subtree}{$key} = $val; | ||
18 | } | ||
19 | return $self->{_subtree}{$key}; | ||
20 | } | ||
21 | return $self->{_subtree}; | ||
22 | } | ||
23 | |||
24 | sub keys { | ||
25 | my $self = shift; | ||
26 | return keys %{$self->{_subtree}}; | ||
27 | } | ||
28 | |||
29 | sub has_key { | ||
30 | my ($self, $key) = @_; | ||
31 | return $self->subtree($key); | ||
32 | } | ||
33 | |||
34 | sub delete { | ||
35 | my ($self, $key) = @_; | ||
36 | delete $self->{_subtree}{$key}; | ||
37 | } | ||
38 | |||
39 | sub is_leaf { 0 } | ||
40 | |||
41 | 1; | ||