Comments (1)
I have a solution that I can re-add on top of the macros I'm introducing that makes each enum have Custom(unicode::Value)
variant that catches all unknown values, making the enum look like:
enum Collation {
Standard,
Search,
Phonetic,
Pinyin,
Searchjl,
Custom(unicode::Value)
}
and then -u-co-search
ends up as Collation::Search
but -u-co-foo
ends up as Collation::Custom(value!("foo"))
.
This is easy to add, but it brings an architectural question - is there a value in having enum at all then?
For keys that have "open ended" values such as Currency, I use struct Currency(TinyAsciiStr<3>)
to represent an open ended validated range of currencies.
If we add Custom, then we could turn Collation
, Calendar
etc into such struct Collation(Subtag)
and struct Calendar(Value)
and get rid of enum with known variants at all.
I'm torn on whether this is a better design. I see two use cases of icu_preferences keys API:
- in code as
if preferences.collation == Collation::Search
- in data as
let data = payload.get(preferences.collation)
In the former the ergonomics of having "known" variants is great, while in the latter it doesn't matter - we retrieve a key from some collection by key, so we either need to serialize the known variant, or we can use Subtag/TinyStr/Value as key.
from icu4x.
Related Issues (20)
- Neo date formatter: Options<R> vs R::Options and same for .format HOT 8
- Decide on names for icu_datetime and icu_calendar errors over FFI HOT 1
- Should we adopt a more consistent naming convention for traits and marker types? HOT 28
- LocaleExpander and LocaleDirectionality should use `AsRef` for their type parameter
- GitHub Pages and GCS resource efficiency HOT 10
- Create a way to map a Locale to a default Currency HOT 6
- For Currency Long Formatting: check that the .json data is completed
- Refactor: Move `MeasureUnit` to a Separate Crate HOT 3
- Choose an appropriate name for `MeasureUnit` crate HOT 2
- Consider Adding Specific Formatter for Long Formatting in for currency formatter HOT 2
- Add return type to `Yoke::with_mut` and `Yokeable::transform_mut` HOT 6
- Suggestion: Use `PluralRules` instead of `Count` HOT 4
- Missing `other` Unit Pattern for `sd` Locale in the Data for Long Currency HOT 5
- Special ZeroMap for ULE keys and VarULE values HOT 7
- Better abstractions for splitting lengths out from VarZeroVec
- Improve handling of overlap patterns in semantic datetime
- We should support running ICU4X tests with JSON data HOT 6
- Add back postcard fingerprints.csv HOT 1
- Baked data is bigger than postcard data HOT 6
- Should compiled data constructors be on the owned or borrowed type? 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 icu4x.