Skip to content
This repository has been archived by the owner on Oct 16, 2024. It is now read-only.

Add support for singularizing plural method names #341

Open
walnutist opened this issue Jan 9, 2019 · 2 comments
Open

Add support for singularizing plural method names #341

walnutist opened this issue Jan 9, 2019 · 2 comments

Comments

@walnutist
Copy link

walnutist commented Jan 9, 2019

Currently FreeBuilder's supports on collection cannot support de-pluralizing the property names. e.g. List<String> descendants(); would generate addDescendants(String element) in the builder class, but what really expected is addDescendant(String element). Even better, there should be some kind of Immutables-like naming convention mapping support

@alicederyn alicederyn changed the title Needs better plural naming supports Add support for singularizing plural method names Jan 25, 2019
@lbovet
Copy link

lbovet commented Aug 19, 2021

Or generate addToDescendants(String element)
Easier to realize and conceptually correct.

@alicederyn
Copy link
Collaborator

alicederyn commented Nov 3, 2021

I considered this when first creating FreeBuilder, but decided against it for a few reasons, which in no particular order are:

  1. We could stop generating addDescendants(descendant) without breaking any existing code, because we generate a varargs method with matching signature. Thus, this method can be thought of as just an optimization for the common case of adding a single element.
  2. Typing addDe no longer uniquely identifies a single method name, making it more annoying to autocomplete. Some singular/plural changes are especially annoying for this, as they aren't just adding an "s" to the end.
  3. Google Protobuf (the inspiration for the project in many ways I'm deeply indebted to) doesn't have this feature, and nobody seemed to care
  4. I am very much not an expert in this field. Chances were really good I'd trip over landmines regarding i18n that didn't occur to me, and if I tried to maintain the plural/singular list myself, I would likely be doing nothing but updating it. I had no examples to copy for adding extensions to annotation processors, and wanted to focus on other features.

With that said, I have no objection to someone else writing hooks into FreeBuilder that would allow them to provide a third-party depluralization service that users can opt into somehow if 2 is not a concern for them.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants