Class: Hash

Inherits:
Object show all
Defined in:
lib/yake/support.rb

Instance Method Summary collapse

Instance Method Details

#deep_keysObject



7
# File 'lib/yake/support.rb', line 7

def deep_keys() map { |k,v| v.respond_to?(:deep_keys) ? [k] + v.deep_keys : k }.flatten end

#deep_sortObject



8
# File 'lib/yake/support.rb', line 8

def deep_sort() sort.map { |k,v| [ k, v.try(:deep_sort) { |x| x } ] }.to_h end

#deep_transform_keys(&block) ⇒ Object



20
21
22
# File 'lib/yake/support.rb', line 20

def deep_transform_keys(&block)
  deep_transform(:transform_keys, &block)
end

#deep_transform_keys!(&block) ⇒ Object



24
25
26
# File 'lib/yake/support.rb', line 24

def deep_transform_keys!(&block)
  deep_transform(:transform_keys!, &block)
end

#encode64Object



9
# File 'lib/yake/support.rb', line 9

def encode64() to_json.encode64 end

#except(*keys) ⇒ Object



10
# File 'lib/yake/support.rb', line 10

def except(*keys) reject { |key,_| keys.include? key } end

#strict_encode64Object



11
# File 'lib/yake/support.rb', line 11

def strict_encode64() to_json.strict_encode64 end

#stringify_namesObject



12
# File 'lib/yake/support.rb', line 12

def stringify_names() deep_transform_keys(&:to_s) end

#stringify_names!Object



13
# File 'lib/yake/support.rb', line 13

def stringify_names!() deep_transform_keys!(&:to_s) end

#symbolize_namesObject



14
# File 'lib/yake/support.rb', line 14

def symbolize_names() deep_transform_keys(&:to_sym) end

#symbolize_names!Object



15
# File 'lib/yake/support.rb', line 15

def symbolize_names!() deep_transform_keys!(&:to_sym) end

#to_deep_structObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/yake/support.rb', line 28

def to_deep_struct
  to_struct.tap do |struct|
    struct.to_h.each do |key, val|
      struct[key] = if val.is_a?(Array)
        val.map do |item|
          item.respond_to?(:to_deep_struct) ? item.to_deep_struct : item
        end
      elsif val.is_a?(Hash)
        val.to_deep_struct
      else
        val
      end
    end
  end
end

#to_formObject



16
# File 'lib/yake/support.rb', line 16

def to_form() URI.encode_www_form(self) end

#to_json_sortedObject



17
# File 'lib/yake/support.rb', line 17

def to_json_sorted() deep_sort.to_json end

#to_structObject



18
# File 'lib/yake/support.rb', line 18

def to_struct() OpenStruct.new(self) end