If you don’t know what is Carlos, head over here first, or here for the Github repo.
New release
Yesterday I closed the last open issue in the 0.4
milestone. Here are the highlights (since 0.3
):
- Introduced the
Fetcher
protocol so that it’s easier now to create custom fetchers that don’t have write - Speaking about fetchers, you can now transform the output value of a fetcher through
OneWayTransformer
objects, as opposed to the requiredTwoWayTransformer
objects when transforming the values of a full-blownCacheLevel
forset
support - Speaking about transformers, you can now compose transformers as well (both
OneWayTransformer
andTwoWayTransformer
are supported)! Operators and functions are the same as for composing cache levels - More about transformers! Added a
JSONTransformer
that transformsNSData
toAnyObject
(to support both arrays and dictionaries) and back toNSData
that you can pipe to aNetworkFetcher
to get JSON out of it. This also means now there is aCacheProvider.JSONCache
in case you’re lazy about it :) - Last thing about transformers, or about post processing to be more specific: it’s now possible to apply a post-processing to the output of a
CacheLevel
through aOneWayTransformer
that doesn’t change the type of theCacheLevel
. As an example, you could resize images or sanitize the output in general - Last but not least, added support for both
WatchOS 2
ANDtvOS
(yes, already!)
What is the future development?
We have a lot of ideas in mind for future versions of Carlos. Some of them will break its API, since the project is so young and there is no concept of stable API yet. But they will also make the library even better, easier to use, and more powerful at the same time.
If you’re curious, head over here.
The biggest idea we’re currently designing is the abstraction of cache levels and key/value transformers. We would like them to work the same way, so that one can not only compose cache layers, but actually chain them too.
How can I contribute?
Contributions are welcome! We’re in the early stage of development so your contributions could shape the design of Carlos.
If you want to contribute to the project, please:
- Create an issue explaining your problem and your solution
- Create a branch with the issue number and a short abstract of the feature name
- Implement your solution
- Write tests (untested features won’t be merged)
- When all the tests are written and green, create a pull request, with a short description of the approach taken
Thanks for reading! I’m really excited about the future of Carlos
!