Re: [PATCH v4] gitweb: redacted e-mail addresses feature.
flat view
From: Georgios Kontaxis <hidden>
Date: 2021-03-28 21:43:51
"Georgios Kontaxis" [off-list ref] writes:quoted
quoted
I'll defer to others who are more familiar with gitweb and Perl ecosystem if this is warranted, but I have a feeling that importing and using Mail::Address->parse() only because we want to see if a given "<string>" is an address is a bit overkill and it might be sufficient to do something as crude as m/^<[^@>]+@[a-z0-9-.]+>$/i ...quoted
+ while ($line =~ m/(<[^>]+>)/g) { + my $match = $1; + if (!is_mailaddr($match)) { + next; + } + my $offset = pos $line; + my $head = substr $line, 0, $offset - length($match); + my $redaction = "<redacted>"; + my $tail = substr $line, $offset; + $line = $head . $redaction . $tail; + pos $line = length($head) + length($redaction);Hmmmm, Perl suggestions from others? It looks quite strange to see that s/// operator is not used and replacement is done manually with byte position in a Perl script.If there's a more elegant way to do the above we can certain do that instead.For example, if we do not insist on using overkill Mail::Address->parse(), we could do something silly like this: $line =~ s/<[^@>]+@[a-z0-9-.]+>/<redacted@address>/ig; no?
It's not clear if you think it's overkill because we have to depend on an external module or because we don't need accurate parsing. The above expression seems to get the job done but it isn't the correct way to parse an e-mail address. But if it's good enough for the reviewers I don't feel strongly about it. If we prefer accurate parsing but don't like depending on Mail::Address, it's easy to write complete expressions ourselves. (In a separate, internal, Perl module) Thoughts?