- Introduce Dense.list(coll, '..author'), like .get but always returns an array
- Introduce Dense.paths(coll, '..author')
- Stop fooling around and stick to https://semver.org
- Interpret "replies.0_1_2" as
[ "replies", "0_1_2" ]not[ "replies", 0 ]
- Differentiate KeyError and IndexError upon miss
- Fix
Dense.fetch({ 'a' => nil }, 'a') - Implement Dense.force_set(coll, k, v)
- Accept '!' in names
- Accept string and symbol keys in path arrays
- Accept path arrays in Dense::Path.make
- Accept
[a;b;c]union keys - Accept regular expressions for object keys
- Add Dense.path(path) and Dense.gather(collection, path)
- Use but enhance KeyError and TypeError
- Differentiate between
*and.* - Complete ework around Path#gather
- Straighten Dense.fetch
- Accept
owner[age](unquoted key name in bracket index) - Accept '=' and '?' in key names
- Introduce Dense::Path#last
- Introduce Dense::Path indexation and equality
- Introduce Dense::Path #length and #size
- Introduce Dense::Path::NotIndexableError#relabel
- Introduce Dense::Path::NotIndexableError
- Differentiate
Dense.get(col, path)fromDense.fetch(col, path[, default]) - Provide Dense::Path.to_s
- Introduce Dense.has_key?(collection, path)
- Introduce Dense.insert(collection, path, value)
- Accept
.firstand.lastwhen indexing arrays - Introduce Dense.unset(collection, path)
- Introduce Dense.set(collection, path, value)
- Introduce Dense.get(collection, path)
- initial release