- 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
.first
and.last
when indexing arrays - Introduce Dense.unset(collection, path)
- Introduce Dense.set(collection, path, value)
- Introduce Dense.get(collection, path)
- initial release