summaryrefslogtreecommitdiff
path: root/Xerl/Page/Rules.pm
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2018-12-14 17:42:36 +0200
committerPaul Buetow <paul@buetow.org>2018-12-14 17:42:36 +0200
commit6cc1fe15416a6e652b644278626e47658351e545 (patch)
tree4c8890bdd5feef0b806974224181860807e8fd1b /Xerl/Page/Rules.pm
parent849560bc3c48f6c753932dd08d2191e36d477ce0 (diff)
parent3e65cce0ec33e290cf45b7cc9e661977bb225810 (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.pm75
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;