class WrapIt::HTMLData

Provides hash-like access to HTML data.

@author Alexey Ovchinnikov <alexiss@cybernetlab.ru>

Public Class Methods

new(**value) click to toggle source
Calls superclass method
# File lib/wrap_it/html_data.rb, line 34
def initialize(**value)
  super(HTMLData.sanitize(**value))
end
sanitize(**values) click to toggle source

Sanitizes html data

@overload sanitize(values = {})

@param  values [Hash] hash to sanitize

@return [Hash] sanitized hash

# 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