]> bicyclesonthemoon.info Git - botm/config/commitdiff
added html entity encoding,
authorb <rowerynaksiezycu@gmail.com>
Sun, 25 Sep 2022 10:27:48 +0000 (10:27 +0000)
committerb <rowerynaksiezycu@gmail.com>
Sun, 25 Sep 2022 10:27:48 +0000 (10:27 +0000)
fixed whitespace handling for empty pattern

configure.pl

index 3a13a61c85db53bb822688f66c9bcf277a5bbfb8..d575160773d3af8ae0682dfeb6a5b0e607b47299 100755 (executable)
 #     $0 - the text to be encoded
 #     $1 - the regexp which specifies which characters should be encoded
 #          if not specified then a default regexp is used
+#   @_HT_ENCODE is a function which will perform HTML entity encoding
+#     $0 - the text to be encoded
+#     $1 - the regexp which specifies which characters should be encoded
+#          if not specified then a default regexp is used
 #   @_SPRINTF is a call to the Perl sprintf() function
 #     $0 - the format string
 #     $1 and continuing - the parameters to sprintf()
@@ -372,6 +376,7 @@ use constant PATH_SEPARATOR  => '_PATH_SEPARATOR';
 
 use constant ESCAPE     => '_ESCAPE';
 use constant URL_ENCODE => '_URL_ENCODE';
+use constant HT_ENCODE  => '_HT_ENCODE';
 use constant PATH       => '_PATH';
 use constant SPRINTF    => '_SPRINTF';
 
@@ -562,6 +567,7 @@ sub escape {
        return $outcome;
 }
 
+# NOT UNICODE AWARE
 sub urlencode {
        (my $text, my $match) = @_;
        unless (defined $match) {
@@ -580,6 +586,26 @@ sub urlencode {
        return $outcome;
 }
 
+# NOT UNICODE AWARE
+# (but there no real need to escaping non-ascii characters)
+sub entityencode {
+       (my $text, my $match) = @_;
+       unless (defined $match) {
+               $match = '[\"=><\&]'
+       }
+       
+       my $outcome = '';
+       foreach my $ch (split('', $text)) {
+               if ($ch =~ $match) {
+                       $outcome .= sprintf('&#%02hu;',ord($ch));
+               }
+               else {
+                       $outcome .= $ch;
+               }
+       }
+       return $outcome;
+}
+
 sub join_path {
        (my $joiner, my @segments) = @_;
        
@@ -790,6 +816,9 @@ sub parse_pattern {
        elsif ($name eq URL_ENCODE) {
                $return = urlencode(@parameter_list);
        }
+       elsif ($name eq HT_ENCODE) {
+               $return = entityencode(@parameter_list);
+       }
        elsif ($name eq PATH) {
                $return = join_path($cfg{PATH_SEPARATOR()},@parameter_list);
        }
@@ -834,7 +863,7 @@ sub parse_value {
        if ($to_parse =~ /^((([^#\\])|(\\.))*)#/) {
                $to_parse = $1;
        }
-       if ($to_parse =~ /^[ \t]*([^ \t](.*[^ \t])?)[ \t]*$/) {
+       if ($to_parse =~ /^[ \t]*(([^ \t](.*[^ \t])?)?)[ \t]*$/) {
                $to_parse = $1;
        }