Comments (6)
It's worth mentioning that Kaffy has the plural_name admin function to customize the plural form of any schema.
Having said that, I think Kaffy could be smarter in dealing with plural names out of the box.
Alternatively, since the package is licensed on MIT, perhaps a large part of it could be just pulled into Kaffy, without reinventing the wheel.
This would be my preference if we're going that route.
Please feel free to submit a PR for this 🙏🏻.
Maybe we should also consider more options and use cases.
from kaffy.
inflex seems to be the most popular and still maintained.
I'm still not sure whether it's a good idea to bring an additional dependency just so we can have better support for inflections.
Still up for discussion though.
from kaffy.
Oh, didn't know about inflex
. Nice. However, I too think that pulling it as a dependency would be too much. As such, I see following options:
1. Optional support for inflex
With something like:
plural =
if Code.ensure_loaded?(Inflex) do
Inflex.pluralize(term)
else
fallback_pluralize(term)
end
In my experience, this works, however is very tricky to test both paths - with and without Inflex
module present.
2. Support inflex
via config
config :kaffy, inflector: Inflex
# and then
inflector = Application.get_env(:kaffy, :inflector, Kaffy.Inflector)
inflector.pluralize(term)
3. Not support it at all, relying on a built-in Kaffy inflector
If Kaffy should have its own inflector, again - two options:
- Pull in something almost complete, like
inflectorex
orinflex
and have to support this code (not sure if I'm comfortable with that, seems a bit complex) - Build something much simpler, incomplete by design, but still covering much more cases that just appending
s
.
from kaffy.
I think we could combine 2 things:
- Support
inflex
via config. - Build something much simpler, incomplete by design, but still covering much more cases that just appending
s
.
I like the idea of supporting an inflection package via config because this could potentially be beneficial for other languages as well in the future.
from kaffy.
Sounds good. I'll try to create a PR soon.
from kaffy.
Closing this issue as #233 has been merged
from kaffy.
Related Issues (20)
- [BUG] String Arrays aren't decoded from JSON HOT 2
- [BUG] Automatically setting belongs_to fields when nil HOT 3
- [FEATURE-REQUEST] Bulk Delete HOT 1
- [FEATURE-REQUEST] custom_index_query should receive all rather than paged HOT 1
- [FEATURE-REQUEST] Have a way to call a custom attribute in show/edit/create
- [FEATURE-REQUEST] - resolve deprecation warnings in Phoenix 1.7 HOT 1
- [FEATURE-REQUEST] allow to modify auto-detected resources HOT 1
- [BUG] :readonly option not working HOT 1
- [FEATURE-REQUEST] Hide action buttons in show template HOT 1
- Unexpected error `Enumerable not implemented for nil of type Atom` HOT 3
- [BUG] Crash occurs when a schema has a `:page` field or association
- [FEATURE-REQUEST] Config option to turn off bulk delete HOT 6
- [BUG] readonly also not working with dropdown fields HOT 1
- [BUG] Resource creation errors when schema contains {:array, Ecto.Enum} field ((FunctionClauseError) no function clause matching in String.length/1) HOT 2
- [BUG] create action broken HOT 3
- [BUG] (UndefinedFunctionError) function :ping_erlang.__info__/1 is undefined or private HOT 2
- How can I make Main Dashboard widgets? HOT 2
- How do I change the `default_actions/1` for all schemas at once?
- [Feature] Phoenix HTML 4.0 not supported HOT 17
- [FEATURE-REQUEST] Role-based admins HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kaffy.