Module: Chef::Node::Mixin::ImmutablizeHash

Included in:
Attribute, ImmutableMash
Defined in:
lib/chef/node/mixin/immutablize_hash.rb

Constant Summary collapse

ALLOWED_METHODS =

allowed methods that MUST NOT mutate the object (if any of these methods mutate the underlying object that is a bug that needs to be fixed)

%i{
  <
  <=
  >
  >=
  []
  all?
  any?
  assoc
  chain
  chunk
  chunk_while
  collect
  collect_concat
  compact
  compare_by_identity
  compare_by_identity?
  count
  cycle
  deconstruct_keys
  default
  default_proc
  detect
  dig
  drop
  drop_while
  each
  each_cons
  each_entry
  each_key
  each_pair
  each_slice
  each_value
  each_with_index
  each_with_object
  empty?
  entries
  except
  fetch
  fetch_values
  filter
  filter_map
  find
  find_all
  find_index
  first
  flat_map
  flatten
  grep
  grep_v
  group_by
  has_key?
  has_value?
  include?
  index
  inject
  invert
  key
  key?
  keys
  lazy
  length
  map
  max
  max_by
  member?
  merge
  min
  min_by
  minmax
  minmax_by
  none?
  normalize_param
  one?
  partition
  rassoc
  reduce
  reject
  reverse_each
  save_plist
  select
  size
  slice
  slice_after
  slice_before
  slice_when
  sort
  sort_by
  sum
  take
  take_while
  tally
  to_a
  to_h
  to_hash
  to_plist
  to_proc
  to_set
  to_xml_attributes
  to_yaml
  transform_keys
  transform_values
  uniq
  value?
  values
  values_at
  zip
  deep_merge
  symbolize_keys
  stringify_keys
  compact_blank
  deep_symbolize_keys
  extractable_options?
  assert_valid_keys
  to_options
  to_options!
  deep_transform_keys
  deep_stringify_keys
  pick
  index_by
  in_order_of
  many?
  sole
  exclude?
  excluding
  minimum
  maximum
  pluck
  including
  without
  index_with
}.freeze
DISALLOWED_MUTATOR_METHODS =
%i{
  []=
  deep_merge!
  extract!
  slice!
  clear
  collect!
  compact!
  default=
  default_proc=
  delete
  delete_if
  except!
  filter!
  keep_if
  map!
  merge!
  rehash
  reject!
  replace
  select!
  shift
  store
  transform_keys!
  transform_values!
  unlink!
  unlink
  update
  write!
  write
  stringify_keys!
  compact_blank!
  symbolize_keys!
  deep_transform_keys!
  deep_symbolize_keys!
  deep_stringify_keys!
}.freeze