Re: [RFC v2] scripts: kernel-doc: reduce repeated regex expressions into variables

From: Matthew Wilcox
Date: Tue Apr 27 2021 - 12:57:08 EST


On Tue, Apr 27, 2021 at 09:55:35AM -0600, Jonathan Corbet wrote:
> The use of the variables here doesn't really make those expressions more
> readable.
>
> > $members =~ s/\s*CRYPTO_MINALIGN_ATTR/ /gos;
> > - $members =~ s/\s*____cacheline_aligned_in_smp/ /gos;
> > - $members =~ s/\s*____cacheline_aligned/ /gos;
> > + $members =~ s/\s*$cacheline_aligned_in_smp/ /gos;
> > + $members =~ s/\s*$cacheline_aligned/ /gos;
> >
> > + my $args = qr{([^,)]+)};
> > # replace DECLARE_BITMAP
> > $members =~ s/__ETHTOOL_DECLARE_LINK_MODE_MASK\s*\(([^\)]+)\)/DECLARE_BITMAP($1, __ETHTOOL_LINK_MODE_MASK_NBITS)/gos;
> > - $members =~ s/DECLARE_BITMAP\s*\(([^,)]+),\s*([^,)]+)\)/unsigned long $1\[BITS_TO_LONGS($2)\]/gos;
> > + $members =~ s/DECLARE_BITMAP\s*\($args,\s*$args\)/unsigned long $1\[BITS_TO_LONGS($2)\]/gos;
>
> Here too ... this is the kind of stuff that makes me glad that Colorado
> is a legal-weed state, and the new version, while better, doesn't change
> that basic fact.

I'm going to have to disagree with you on this one (I agree with you on all
the others). I find this much easier to read ...

"DECLARE_BITMAP followed by any amount of whitespace, literal open bracket,
an argument, literal comma, whitespace, another argument, literal close bracket"

Before, I get to "DECLARE_BITMAP followed by any amount of whitespace,
then some line noise".

Obviously I'm less experienced at reading regexes than you are, but this
simplification really does help me.

> I think I'll stop here; hopefully I've gotten my point across. I really
> like where this work is heading; focusing just a bit more on pulling the
> regexes together and making the whole thing more readable would be
> wonderful.

Amen.