diff options
Diffstat (limited to 'globals.pl')
-rw-r--r-- | globals.pl | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/globals.pl b/globals.pl index 302d9b8b7..51fe1ddee 100644 --- a/globals.pl +++ b/globals.pl @@ -1224,6 +1224,37 @@ sub Param ($) { die "Can't find param named $value"; } +# Take two comma or space separated strings and return what +# values were removed from or added to the new one. +sub DiffStrings { + my ($oldstr, $newstr) = @_; + + my (@remove, @add) = (); + my @old = split(/[ ,]/, $oldstr); + my @new = split(/[ ,]/, $newstr); + + # Find values that were removed + foreach my $value(@old) { + next if $value =~ /^\s*$/; + if (! grep /^$value$/, @new) { + push (@remove, $value); + } + } + + # Find values that were added + foreach my $value(@new) { + next if $value =~ /^\s*$/; + if (! grep /^$value$/, @old) { + push (@add, $value); + } + } + + my $removed = join (", ", @remove); + my $added = join (", ", @add); + + return ($removed, $added); +} + sub PerformSubsts { my ($str, $substs) = (@_); $str =~ s/%([a-z]*)%/(defined $substs->{$1} ? $substs->{$1} : Param($1))/eg; |