From 1624ce382eb033c2cf3ef1fe6b9c41beb0b0a91b Mon Sep 17 00:00:00 2001 From: Angelo Naselli Date: Mon, 27 Jan 2014 18:20:30 +0100 Subject: Project structure change --- lib/AdminPanel/ConfigReader.pm | 119 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 lib/AdminPanel/ConfigReader.pm (limited to 'lib/AdminPanel/ConfigReader.pm') diff --git a/lib/AdminPanel/ConfigReader.pm b/lib/AdminPanel/ConfigReader.pm new file mode 100644 index 0000000..718a381 --- /dev/null +++ b/lib/AdminPanel/ConfigReader.pm @@ -0,0 +1,119 @@ +# vim: set et ts=4 sw=4: +# Copyright 2012 Steven Tucker +# +# This file is part of AdminPanel +# +# AdminPanel is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# AdminPanel is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with AdminPanel. If not, see . + + +#Class ConfigReader +package AdminPanel::ConfigReader; + +use strict; +use warnings; +use diagnostics; +use XML::Simple; +use Data::Dumper; + +sub new { + my ($class, $fileName) = @_; + + my $self = { + my $data = 0, + my $catLen = 0, + my $currCat = 0, + my $modLen = 0, + my $currMod = 0, + my $placeHolder = 0 + }; + bless $self, 'AdminPanel::ConfigReader'; + + my $xml = new XML::Simple (KeyAttr=>[]); + $self->{data} = $xml->XMLin($fileName); + if (ref($self->{data}->{category}) eq "HASH") { + # one element alone + my @categories; + push @categories, $self->{data}->{category}; + $self->{data}->{category} = undef; + push @{$self->{data}->{category}}, @categories; + } + $self->{catLen} = scalar(@{$self->{data}->{category}}); + $self->{currCat} = -1; + + if(ref(@{$self->{data}->{category}}[0]->{module}) eq "ARRAY") { + $self->{modLen} = scalar(@{@{$self->{data}->{category}}[0]->{module}}); + } else { + $self->{modLen} = 1; + } + $self->{currMod} = -1; + + return $self; +} + +sub hasNextCat { + my ($self) = @_; + + if($self->{currCat} + 1 >= $self->{catLen}) { + return 0; + } + return 1; +} + +sub getNextCat { + my ($self) = @_; + + $self->{currCat}++; + if($self->{currCat} >= $self->{catLen}) { + return 0; + } + + # Reset the Module Count and Mod length for new Category + $self->{currMod} = -1; + if(ref(@{$self->{data}->{category}}[$self->{currCat}]->{module}) eq "ARRAY") { + $self->{modLen} = scalar(@{@{$self->{data}->{category}}[$self->{currCat}]->{module}}); + } else { + $self->{modLen} = 1; + } + + my $tmp = @{$self->{data}->{category}}[$self->{currCat}]; + + return $tmp; +} + +sub hasNextMod { + my ($self) = @_; + + if($self->{currMod} + 1 >= $self->{modLen}) { + return 0; + } + return 1; +} + +sub getNextMod { + my ($self) = @_; + + my $ret = 0; + + $self->{currMod}++; + + if($self->{modLen} == 1) { + $ret = @{$self->{data}->{category}}[$self->{currCat}]->{module}; + } else { + $ret = @{@{$self->{data}->{category} }[$self->{currCat}]->{module}}[$self->{currMod}]; + } + + return $ret; +} + +1; -- cgit v1.2.1