🚀 This release takes aim at improving compatability with ActiveSupport. It also reintroduces an improved paramix.rb.
4 Major Enhancements
- A much improved paramix.rb has been returned to the library.
- There a no longer capitialize module methods at all.
- Use Module# and mixin_params instead.
- Deprecated behavior.rb. It was not robust.
- Added basex.rb, for working in any encoding base using any character set (base62 is the default).
3 Minor Enhancements
- Comparing to ActiveSupport, found 63 extension clashes, but most are due to 1.9 features. The rest should be compatible.
- Reatomized a number of Kernel and String methods. Reatomization is nearly complete.
- Continued work on reatomizing core extensions (nearly complete now).
🚀 Facets 2.4 is a major step forward for Facets. It is perhaps the release 🚀 that 2.0 should have been, but of course it took the actual 2.0 release ⚡️ to make 2.4 possible. Some annoyances you may have encountered in updating 🛠 your code to 2.0 are now fixed. And from 2.4 on, Facets will now be 🚀 settling down into simple refinement release cycles for a while.
The main change under the hood is to bring everything up to the top lib/facets/ directory. No longer are the libraries sorted by category. I had done so for a long time to make it easier to track the various libs, 🏗 but in the end it was only making it more diffcult to deal with build tools and packaging.
For the end-user, the largest change is a new emphisis on:
👀 This is better than cherry-picking methods. It may seem counter- intuitive, but it actually proves more advantantages to do this for the sake of interoperability than the practice of cherry-picking. The reason is simply because others may have cherry-picked different ✅ methods, and those distinctions go unaccounted and untested.
🚀 Also with this release, to bolster the use of require 'facets', 🗄 some lack-luster extensions have been deprecated and namespace usage has been improved. In addition, we are getting very close to full 💎 ActiveSupport, and Ruby 1.9, interoperability. Expect this 🚀 to be complete in the next minor release or two.
- String#to_re and String#to_rx have swapped default behaviors. #to_rx escapes, #to_re does not.
- The Console namespace is being deprecated. command.rb and arguments.rb now use CLI naemspace.
- #compare_on and #equate_on are now "mixin methods" Comparable() and Equateable().
- Enumerable#product, #combintations and #permutations have change to be Ruby 1.9 compatible.
- thread.rb, map_send, et al, block is passed to send instead of yielding on result.
- namespace.rb has been renamed to methodspace.rb.
- Ruby 1.9 defined a new Proc#curry method, so Facets version has been made compatible.
- The old curry method is now called #partial, as in "partial application".
- Deprecated interface.rb. Perhaps a better approach but nonetheless extraneous.
- Deprecated paramix.rb. A better way is to use a capitialized methods. (Perhaps a lib for that?)
- Brought back a few web related libs, htmlfilter.rb and cssfilter.rb in particular.
- camelcase and snakecase are core extensions. For specialized styles use String#style in style.rb.
- Renamed ArgVector to CLI::Arguments
- Moved one_nine.rb to ruby.rb
- Moved test/test_one_nine.rb to test/test_ruby.rb.
- Updated requires for "one_nine" to just "ruby" b/c of backports to 1.8.7.
- Added warning to Rick Kilmers's unit system.
- Moving Rich Kilmers's units system to it's own package.
- Three are alternate unit systems available and Facets should work with any of them.
- Will keep a fair amount of the Time extensions though.
- Moved nil/status.rb to nilstatus.rb
- Got rid of Method#curry and Method#partial since they just convert to Procs.
- Made op_esc.rb a separate module rather thanan extension.
- Deprecated with_reader, with_writer and with_accessor for attr_singleton_reader, &c.
- Deprecated Hash#pairs_at. Use Hash#slice instead from core.
- Fixed the namespaces of some extensions.
- Added prime directory and files.
- Removed all "prime" extension files.
- Move mattr to module.
- Fixed require bug in time methods.
- Reverted memomize.rb back to original code --will come back to later.
- Added stylizer.rb to replace stylize.rb
- Array #recursively is not only called #traverse.
- Added case/stylize methods to more/facets/string.
- Renamed more/string/facets/titlecase to captialize_all.
- Added uri and xoxo tests.
- Progressive work on memoize and elementor.
- Functor no longer privatizes =, == and =~.
- Properly split conversion.rb.
- Some string methods extracted from stylize.rb.
- Moved random.rb to more/.
- Renamed namespace.eb to methodspace.rb.
- Moved autoreload to more/facets/kernel.
- Removed old curry.rb.
- Added cgi.rb with some standard extensions.
- Deprecated paramix.rb.
- Added xmlhash.rb and returned uri.rb extensions to the library.
- Added #method_name to Date class.
- Remove cut-bases AOP, now in it's own library.
- Converted compare_on.rb to Paramtric Mixins.
- Split fileutils up into individual methods.
- Renamed console.rb to what it should be consoleutils.rb.
- Update to command.rb integrating MasterCommand and Command into a single class.
- Added options back into multiglob_r.
- Improved cloneable.rb to be a true deep dup/clone mixin using Ken Bloom's suggestion.
- Added tasksystem.rb.
- Added enumerable/combinations.
- Added openhash and tracepoint.
🐛 Bug Fixes
- Fixed bug with #peek in stackable.
- Fixed bug in Kernel#object_hexid.
- Fixed bug in multiglob_r so it will NOT follow symlinks.
- Fixed test_keyize.rb.
- This was a fairly large and fast-paced update, so unfortunately not all changes are listed this time.
- Added ri generation to setup.rb.
- Updated README and allowed doc/ to be included in package.
- Finally completed removal of all embedded tests.
- Organized all libs between core, more, class and mixin.
🚀 Amoung other changes with this release, cloneable.rb is now a true deep 👯 dup/clone mixin; tracepoint.rb returns to the library.
4 Major Enhancements
- Cloneable provides true deep cloning.
- Moved hash_keyize.rb to CORE as hash/keyize.rb.
- Added tracepoint.rb back to the library.
- Added hash/collate.
🛠 3 Bug Fixes
- Fixed multiglob_r bug, so it will NOT follow symlinks.
- Added a couple of missing binding requires.
- Fixed test_keyize.rb.
6 Admistrative Changes
- Reorganized library into smaller groups: core, more, class and mixin.
- Remove admin/svn subdir.
- Remove admin/log.
- Add admin tasks.
- Moved admin tasks to admin directory.
- Added admin directory.
🚀 This release get rid of the underlying methods subdir. All method redirects are now in core, to ensure there are no more name clashes.
- Moved string/format.rb to string/wrap.rb.
- Updated String#brief.
- Moved binding/cflow.rb to caller.rb.
- Moved core hash/keyize to more.
- Fixed up binding extensions.
- Got rid of methods subdir. All method redirects are in core/.
- Moved doc/wiki to apiwiki b/c of Rubyforge's wiki.
- Removed doc/api dir.
- Added wiki.
- Renamed a couple test tasks.
- Update per-module/class files.
- Moved methods and groups task to trash.
- Added test class/remove_descendents.rb.
- Added all remaining per-method require libs from methods/ (will need to wrok through these over time).
- Added trash work directory.
- Adjust text according to per-method file changes.
- All hash method, but the conversion methods, are now represented in core/facets/hash.
- Added a few more Hash per-method files.
- Add per-method libs for hash.
- Updated facets/string.rb.
- Renamed ROLLRC to facets.roll.
🚀 This release provides improved rdocs and prepares facets for use with Ruby 1.9. It also adds Matthew Harris' duration.rb library. Bug thanks to Matthew!
- Added Matthew Harris' Duration class.
- Added Hash#slice and Hash#except (didn't we have this before?)
- Added registerable.rb, updated history.
- Added #include_as to facets/namespace.rb.
- Added op.rb to string.rb.
- Added String/op.rb with String#- method.
Method Renames and Reorganizations
- The name Array#unzip didn't makes sense, it was renamed to #modulate (though #collate seems better?)
- Renamed Enumerable#collate to #mash (Map hASH); #collate and #graph remain aliases for the time being.
- Renamed accessor #attributes to #instance_attributes.
- Renamed Enumerable #collate to #mash. (old name, along with graph, will be an alias for time being)
- Divided enumerable/collect into split.rb and each.rb as well.
- Moved mapsend.rb to thread.rb.
- Updated mapsend.rb to focus on threads.
- Moved continuation extensions to more lib.
- Deprecated Module#include_and_extend. Just use both silly.
- More lib pp_s.rb has been removed. Use #pretty_inspect instead.
- Removed continuation from core.
- Removed pp_s.rb (use pretty_inspect) add continuation.rb.
- Remove kernel/require_esc.rb.
- integer/bitmask.rb has changed a bit --pun intended ;) Deprecated some methods and now use "~" instead of "-" to clear bits.
- Split binding extensions up a bit more finely --eval.rb sprouted here.rb, self.rb and defined.rb.
- Move Time#stamp out of conversion.rb and into time/ dir, and remove to_s alias.
- Preliminary addition of Matthew Harris' excellent duration.rb lib (will integrate with times.rb better in future).
- Minor edit to basicobject.rb in light of 1.9.
- Minor adjustments to lazy.rb to fix warnings by Ruby 1.9.
- Added if clauses to handle upcoming Ruby 1.9 gracefully. Facets should now be just about ready for use with 1.9.
📚 Documentation Enhancements
- A lot of rdoc updates to core extensions --as promised ;)
- Just about every method now has at least a brief explinaiton and an example.
- Moved task/config.yaml to meta/ per new Ratch.
- Moved task/special to task/doc.
- Updated todo list (in dev/).
- Copied log/history.rd to CHANGES.
- Removed log/history.rd and log/todo.rd
- Fixed stylize.rb for use with 1.9 (fixed case statement).
- Separated kernel/returning, now that #tap will be in 1.9.
- Updated facets.rb for use with 1.9.
- Separated time/stamp.rb.
- Divided binding up into a few more pieces.
- Fixed kernel/instance to play nice with 1.9.
- Added test for string/op.rb.
- Added test_collect.rb split-offs and test_mash inplace of test_collate.
- Cleanup test headers.
- Added 1.9 check in continuation/create.rb.
- Add a couple new task for rdoc gen.
- Added nbsp to quickopts task.
- Work on website using siteparts.
🚀 This release fixes four bugs --one being fairly serious, as it prevented require 'facets' from working at all.
🛠 4 Bug Fixes
- Fixed oddity in Enumerable/collate.
- Fixed issue that prevented loading of facets.rb.
- Array#to_h used flatten, but it needed to be flatten(1).
- Move core/main.rb back to core/facets.rb as it conflicts with lib in more/.
- Added Exception#details.
- Dir::multiglob no longer handels -/+ modifiers. Use FileList instead.
- Fixed task/install script.
- Improved task/changes.
- Added kernel/ergo.rb.
- Added pp_s.rb (Questionable addition, but we'll leave it for now.)
- Added validation.rb. This is here for Nitro's sake --better techinques may replace it in the future.
- Added Console::Logger to logger.rb (may be separated in future).
- Added option arity to command.rb.
- Removed tracepoint.rb.
🐛 Bug Fixes
- Fixed bug in command.rb that clobbered options.
- Fixed options bug in command.rb.
Major changes include a new and much-improved command.rb, a new BiCrypt class for simple two-way crypotgraphy, as well as attr_reader!, attr_writer! and attr_accessor! for flag attributes, plus alias_xxx methods for all attr_xxx methods.
- Added BiCrypt class for simple two-way encryption.
- module/attr.rb now has attr_reader!, attr_writer! and attr_accessor!
- All attr_xxx methods have coresponding alias_xxx methods.
- Added UniversalOptions module.
- Added "tester" attribues attr_xxx!. Also added alias_xxx for all attr_xxx methods.
- command.rb has been completely rewritten. The API has changed completely!
- There is no longer a Commmand::Optoins class. Use Console::Arguments instead.
- Moved common alias methods from attr.rb to alias.rb.
- MasterCommand now passes (args, opts), until 1.9 is main stream.
- Cleaned up enumerable/permutation.rb
- Added -q option to zip method in ZipUtils.
- Ok. #p is back. This will in fact be in 1.9, so we're good.
🐛 Bug Fixes
- Fixed bug in Enumerable#cluster_by which returned nil instead of .
- Fixed minor bug in arguments.rb that prevented proper repeat parameters.
- Fixed bug in to_console.
- Fixed bug in enumerable/cluster_by (returned nil instead of ).
- Fixed bug in Hash#- Thanks to Xavier Shay.
- Fixed to_h in Command::Options
- Added dev/test
- Renamed RELEASE to WHATSNEW
- Added injecting test and cleaned up.
- Added comment for potential future #is.
- Added top-level log directory.
- Remove #q reference from RELEASE.
- Cleanup of test_initializer.rb.
🚀 Minor release that fixes a couple of bugs and adds the last of adopted methods from Gavin Sinclair's Extensions project.
Also, renamed #p to #q, because of multiple args problem. 💎 I don't know how Ruby 1.9 plans to handle multiple args. 🗄 Will deprecate for 1.9 anyway so doesn't matter much.
- Added final methods Gavin Sinclair's Extensions project. (Noah Gibbs)
- Made #alias_method_chain compatible with current ActiveSupport version.
- Rename #p to #q, because of multiple args problem.
- Allow Class#initializer to return the attribute names.
🐛 Bug Fixes
- Fixe return bug in hash/op.rb.
- Fixe bug with Dictionary#initialize.
- Fixe bug with Hash#-. (Xavier Shay)
- Fixed package name in icli.yaml.
- Added name field to meta/icli.yaml.
- Added meta/icli.yaml.
- Added a RELEASE file to hold current release notes.
- Added log task.
- Added changelog file in doc/log/.