Class: WrapIt::HTMLData

Inherits:
Hash
  • Object
show all
Defined in:
lib/wrap_it/html_data.rb

Overview

Provides hash-like access to HTML data.

Author:

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**value) ⇒ HTMLData

Returns a new instance of HTMLData.



34
35
36
# File 'lib/wrap_it/html_data.rb', line 34

def initialize(**value)
  super(HTMLData.sanitize(**value))
end

Class Method Details

.sanitize(values = {}) ⇒ Hash

Sanitizes html data

Parameters:

  • values (Hash) (defaults to: {})

    hash to sanitize

Returns:

  • (Hash)

    sanitized hash



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/wrap_it/html_data.rb', line 17

def self.sanitize(**values)
  Hash[values
    .map do |k, v|
      k = k.to_s
      if k.include?('-')
        k, n = k.split(/-/, 2)
        v = sanitize(n.to_sym => v)
      else
        k = k.downcase.gsub(/[^a-z0-9_]+/, '').gsub(/\A\d+/, '')
        v = v.is_a?(Hash) ? sanitize(v) : v.to_s
      end
      k.empty? ? nil : [k.to_sym, v]
    end
    .compact
  ]
end