Possible improvement on citation key generation

Posting this here instead of github since it seems a bigger change (although not necessarily breaking)

I noticed that a lot of the citation key patterns (for reference Customize the citation key generator | v5 | JabRef ) seem to be ad-hoc implementations of similar things for very specific strings.

For instance, author and editor have a lot of similar modifiers on the base text, so they require an amount of repeated functionality. At the same time, there is some concept of modifiers but they are only used for a few functionalities but they could be used for much more.

On the other hand, file patterns could use extra properties, at least the linked file description, because if you have say multiple PDFs for the same entry (fulltext and supplementary material for example), they can’t be automatically named or they will overwrite one another (at least so I’ve found in some case).

I guess the suggestion would be to implement the modifiers that the various author/editor patterns use as field modifiers instead, and possibly make the existing patterns be shortcuts for these. This way, for example, [auth.auth.ea] could be implemented as something like [authors:etal(2):join(.)]; [authorIni] could be [authors:slicelist(0,1):firstN(5)][authors:slicelist(1,-1):firstN(1)] (some more thought should go into what exact modifiers should be implemented)