| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
1. Use `indifferent_writer` in `convert!` so that when
`indifferent_writer`, `convert_key` or `indifferent_value` is
overridden in included class, `merge` can use those.
2. `convert!` was calling twice if `other` hash was lacking
indifference. `IndifferentAccess.inject!` already does conversion.
|
|\ \
| | |
| | | |
Test with Ruby 2.7
|
| | |
| | |
| | |
| | | |
Report success even before allowed_failures finish
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | | |
Also switch testing jruby-head from EOL Ubuntu to Travis default (xenial).
|
|/ /
| |
| |
| |
| | |
`sudo: false` is deprecated.
https://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration
|
|\ \
| | |
| | | |
Added TOC and upgraded danger-changelog to verify the keep-a-changelog formatted CHANGELOG.
|
|/ /
| |
| |
| | |
formatted CHANGELOG.
|
| | |
|
|/ |
|
| |
|
|\
| |
| | |
Correct link to PR in CHANGELOG.md
|
|/ |
|
| |
|
| |
|
| |
|
|\
| |
| | |
Suppress a Ruby's warning when using Ruby 2.6.0+
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This PR suppresses the following warning that `deep_merge` method and
`deep_update` method are defined twice when using Ruby 2.6.0+.
```console
% bundle exec rake
(snip)
/Users/koic/src/github.com/hahie/hashie/lib/hashie/mash.rb:226: warning:
method redefined; discarding old deep_merge
/Users/koic/src/github.com/hahie/hashie/lib/hashie/mash.rb:212: warning:
previous definition of deep_merge was here
/Users/koic/src/github.com/hahie/hashie/lib/hashie/mash.rb:232: warning:
method redefined; discarding old deep_update
/Users/koic/src/github.com/hahie/hashie/lib/hashie/mash.rb:218: warning:
previous definition of deep_update was here
```
|
|\
| |
| |
| |
| | |
koic/suppress_integer_unification_warning_for_ruby_2_4_0
Suppress an integer unification warning for Ruby 2.4.0+
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This PR suppresss the following integer unification warning
for Ruby 2.4.0+
```console
% ruby -v
ruby 2.4.9p362 (2019-10-02 revision 67824) [x86_64-darwin17]
% bundle exec rspec spec/hashie/extensions/deep_merge_spec.rb
Hashie::Extensions::DeepMerge
/Users/koic/src/github.com/hahie/hashie/lib/hashie/utils.rb:38: warning:
constant ::Fixnum is deprecated
/Users/koic/src/github.com/hahie/hashie/lib/hashie/utils.rb:38: warning:
constant ::Bignum is deprecated
```
|
|\
| |
| | |
Suppress keyword arguments warning for Ruby 2.7.0
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This PR suppresses the following keyword arguments warning for Ruby 2.7.0.
```console
% bundle exec rspec spec/hashie/extensions/mash/symbolize_keys_spec.rb
(snip)
/Users/koic/src/github.com/hahie/hashie/spec/hashie/extensions/mash/symbolize_keys_spec.rb:29:
warning: Using the last argument as keyword parameters is
deprecated; maybe ** should be added to the call
/Users/koic/src/github.com/hahie/hashie/spec/hashie/extensions/mash/symbolize_keys_spec.rb:21:
warning: The called method `call' is defined here
```
For Ruby 2.8.0-dev (Ruby 3.0) the warning will be `ArgumentError`.
ruby/ruby#2794
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Due to how we have implemented the bang/underbang/query behavior within
Mash, setting keys that have those affixes in them actually allow
overwriting the behavior of those affixes. As such, we shouldn't warn
when setting a key that matches those patterns.
When it comes to setter-like keys, I believe we still _do_ want to warn
for two reasons:
1. Trying to access the key via method access is a syntax error. Ruby
expects any method ending in `=` to be a 2+-arity method due to the
infix notation of setter methods. This is unexpected behavior unless
you're very familiar with Ruby parsing.
2. You can still retrieve the key via the normal `Hash#[]` reader, but
it prevents setting a similar key without the equal sign. You can see
this in the test about setters. I'd say that is unexpected and
surprising behavior.
Because of these two gotchas, I think we should still warn in cases
where you try to set a key that looks like a setter.
|
| |
|
|\
| |
| | |
Only define compact on ruby >= 2.4
|
|/ |
|
|\
| |
| | |
Suppress `Psych.safe_load` arg warn when using Psych 3.1.0+
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This PR suppresses the following `Psych.safe_load` args warn when using
Psych 3.1.0 (Ruby 2.6+).
```console
% bundle exec rake spec
(snip)
/Users/koic/src/github.com/intridea/hashie/lib/hashie/extensions/parsers/yaml_erb_parser.rb:22:
Passing permitted_classes with the 2nd argument of Psych.safe_load is
deprecated. Use keyword argument like Psych.safe_load(yaml,
permitted_classes: ...) instead.
/Users/koic/src/github.com/intridea/hashie/lib/hashie/extensions/parsers/yaml_erb_parser.rb:22:
Passing permitted_symbols with the 3rd argument of Psych.safe_load is
deprecated. Use keyword argument like Psych.safe_load(yaml,
permitted_symbols: ...) instead.
/Users/koic/src/github.com/intridea/hashie/lib/hashie/extensions/parsers/yaml_erb_parser.rb:22:
Passing aliases with the 4th argument of Psych.safe_load is
deprecated. Use keyword argument like Psych.safe_load(yaml, aliases:
...) instead
```
|
|\
| |
| | |
Ensure that Hashie::Arrays are not deconverted
|
|/
|
|
|
|
|
| |
In order for `#dig` to work properly, we need Arrays to be
`Hashie::Array`s to be aware of the key conversion. Our original
`Mash#convert_value` method was deconverting `Hashie::Array`s into
normal Arrays and causing `#dig` to behave in an unexpected manner.
|
|\
| |
| | |
update comment for Mash truthiness methods
|
|/ |
|
|\
| |
| | |
Add a PermissiveRespondTo extension for Mashes
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
By default, Mashes don't state that they respond to unset keys. This
causes unexpected behavior when you try to use a Mash with a
SimpleDelegator.
This new extension allows you create a permissive subclass of Mash that
will be fully compatible with SimpleDelegator and allow you to fully do
thunk-oriented programming with Mashes.
This comes with the trade-off of a ~19KB cache for each of these
subclasses and a ~20% performance penalty on any of those subclasses.
|
|\ \
| | |
| | | |
Prevent deep_merge from mutating nested hashes
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The `DeepMerge` extension has two methods of mutating hashes: a
destructive one and a non-destructive one. The `#deep_merge` version
should not mutate the original hash or any hash nested within it. The
`#deep_merge!` version is free to mutate the receiver.
Without deeply duplicating the values contained within the hash, the
invariant of immutability cannot be held for the original hash. In order
to preserve that invariant, we need to introduce a method of deeply
duplicating the hash.
The trick here is that we cannot rely on a simple call to `Object#dup`.
Some classes within the Ruby standard library are not duplicable in
particular versions of Ruby. Newer versions of Ruby allow these classes
to be "duplicated" in a way that returns the original value. These
classes represent value objects, so it is safe to return the original
value ... unless the classes are monkey-patched, but that isn't
something we can protect against.
This implementation does a best-effort to deeply duplicate an entire
hash by relying on these value object classes being able to return
themselves without violating immutability.
|
|\ \
| |/
|/| |
Update the gemspec for improved information and installation size/speed
|
| |
| |
| |
| |
| | |
We weren't installing the dependencies for the integration tests so the
default Rake task was failing upon first run on a new machine.
|
| |
| |
| |
| |
| | |
Our contributing documentation specifically mentions Bundler so we
should set it as a development dependency.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When you're installing a gem in a production environment, you want it to
install as fast it can. One of the ways you can speed up the
installation of the gem is by making it smaller. We currently ship the
test suite with the gem, increasing the size of the built gem
significantly.
By not shipping the test suite, we can shrink the size of the gem by
38%. Below are the measurements I took for that statement.
**The size of the gem with the test suite**
$ du -b hashie-4.0.1.gem
80384 hashie-4.0.1.gem
**The size of the gem without the test suite**
$ du -b hashie-4.0.1.gem
50176 hashie-4.0.1.gem
|
|/
|
|
|
|
| |
RubyGems.org has recently added the capability to have extra metadata
URLs shown on the gem page. These are handy for people who are new to a
gem or need to report an issue.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Update github urls to hashie/hashie
* Point omniauth in integration tests at master.
Until omniauth releases the changes merged from
https://github.com/omniauth/omniauth/pull/977 , we must point at
master branch.
* revert incorrect change of gem email
Co-Authored-By: Michael Herold <github@michaeljherold.com>
* Reference open issue for release
|
|
|
| |
This is causing too much noise while I experiment, I'll move it to my fork of hashie and test there.
|
| |
|
| |
|
| |
|
| |
|