diff options
| author | Paul Buetow <paul@buetow.org> | 2018-12-14 17:42:36 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2018-12-14 17:42:36 +0200 |
| commit | 6cc1fe15416a6e652b644278626e47658351e545 (patch) | |
| tree | 4c8890bdd5feef0b806974224181860807e8fd1b /Xerl/Page/Rules.pm | |
| parent | 849560bc3c48f6c753932dd08d2191e36d477ce0 (diff) | |
| parent | 3e65cce0ec33e290cf45b7cc9e661977bb225810 (diff) | |
Merge branch 'hosts' of https://github.com/snonux/xerl into hosts
Diffstat (limited to 'Xerl/Page/Rules.pm')
| -rw-r--r-- | Xerl/Page/Rules.pm | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Xerl/Page/Rules.pm b/Xerl/Page/Rules.pm new file mode 100644 index 0000000..ba6bd8e --- /dev/null +++ b/Xerl/Page/Rules.pm @@ -0,0 +1,75 @@ +# Xerl (c) 2005-2011, 2013-2015 by Paul Buetow +# +# E-Mail: xerl@dev.buetow.org WWW: https://xerl.buetow.org +# +# This is free software, you may use it and distribute it under the same +# terms as Perl itself. + +package Xerl::Page::Rules; + +use strict; +use warnings; + +use v5.14.0; + +use Xerl::Base; +use Xerl::Setup::Configure; +use Xerl::XML::Element; + +sub parse { + my $self = $_[0]; + my $element = $_[1]; + my $config = $self->get_config(); + + $element = $element->starttag2( 'rules', $config->get_outputformat() ); + return unless defined $element; + + # Open and close rules: + my ( $orule, $crule ); + + # For all available rules in config.xml + for my $rule ( @{ $element->get_array() } ) { + my $params = $rule->get_params(); + + $orule = $rule->get_text(); + chomp $orule; + + $orule =~ s/\[/</go; + $orule =~ s/\]/>/go; + + unless ( + ref $params eq 'HASH' + && ( lc $params->{end} eq 'yes' + || lc $params->{start} eq 'yes' ) + ) + { + $crule = join '><', reverse split /> *</, $orule; + $crule = "<$crule>"; + $crule =~ s/<</</go; + $crule =~ s/>>/>/go; + $crule =~ s/</<\//go; + $crule =~ s/\n//go; + $crule =~ s/ .+?>/>/go; + $crule .= "\n"; + + } + else { + if ( lc $$params{start} eq 'yes' ) { + $crule = ''; + + } + else { + $crule = $orule; + $orule = ''; + } + $crule .= "\n"; + } + + $params = {} unless ref $params eq 'HASH'; + $self->setval( $rule->get_name(), [ "$orule\n", $crule, $params ] ); + } + + return undef; +} + +1; |
