1
0
mirror of https://github.com/irssi/irssi.git synced 2024-11-03 04:27:19 -05:00
irssi/.github/workflows/clangformat/format-xs-xml.pl

45 lines
872 B
Perl
Raw Normal View History

2020-04-28 09:34:47 -04:00
use strict;
use warnings;
my @diff = <>;
if (@diff && $diff[0] !~ /^---/) {
die "Not valid diff output";
}
my @offs = $ENV{OFFSETS} =~ /(\d+):(\d+)/g;
sub in_off {
if (@offs) {
for (my $i = 0; $i < @offs; $i += 2) {
if ($_[0] + $_[1] >= $offs[$i] && $_[0] <= $offs[$i] + $offs[$i + 1]) {
return 1;
}
}
return '';
} else {
return 1;
}
}
print "<?xml version='1.0'?>
<replacements xml:space='preserve' incomplete_format='false'>\n";
my $open;
for (@diff) {
if (/^\@\@ -(\d+)(,(\d+))? /) {
if ($open) {
print "</replacement>\n";
}
if (in_off($1-($3//1?1:0), $3//1)) {
print "<replacement offset='@{[$1-($3//1?1:0)]}' length='@{[$3//1]}'>";
$open = 1;
} else {
$open = 0;
}
}
elsif (/^[+] +(\d+)/ && $open) {
print "&#$1;";
}
}
if ($open) {
print "</replacement>\n";
}
print "</replacements>\n";