Module: TreeReject
- Extended by:
- TreeReject
- Included in:
- TreeReject
- Defined in:
- lib/tree_reject.rb,
lib/tree_reject/version.rb
Defined Under Namespace
Modules: TreeRejectHash
Constant Summary collapse
- VERSION =
'0.1.0'
Instance Method Summary collapse
-
#tree_reject(map, ignored_keys) ⇒ Object
returns a new map with the ignored keys removed ignored_keys must be an array of IKItems IKItem is the type <Symbol | Array<IkItem> | Hash<Symbol, IKItem>> keys are only removed if their path in the trees match.
Instance Method Details
#tree_reject(map, ignored_keys) ⇒ Object
returns a new map with the ignored keys removed ignored_keys must be an array of IKItems IKItem is the type <Symbol | Array<IkItem> | Hash<Symbol, IKItem>> keys are only removed if their path in the trees match
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/tree_reject.rb', line 18 def tree_reject(map, ignored_keys) ignored_leaves = extract_leaves(ignored_keys) ignored_subtrees = extract_subtrees(ignored_keys, ignored_leaves) map.to_h.each_with_object({}) do |(k, v), cleaned| if ignored_leaves.include?(k) next elsif v.is_a?(Hash) || v.respond_to?(:attributes) cleaned_v = tree_reject(v.to_h, ignored_subtrees[k]) cleaned[k] = cleaned_v unless cleaned_v == {} elsif !v.nil? cleaned[k] = v end end end |