module Hyalite::DOMProperty

Constants

DOM_ATTRIBUTE_NAMES
HAS_BOOLEAN_VALUE
HAS_NUMERIC_VALUE
HAS_OVERLOADED_BOOLEAN_VALUE
HAS_POSITIVE_NUMERIC_VALUE
HAS_SIDE_EFFECTS
ID_ATTRIBUTE_NAME
MUST_USE_ATTRIBUTE
MUST_USE_PROPERTY
PROPERTIES

Public Class Methods

default_value_cache() click to toggle source
# File lib/hyalite/dom_property.rb, line 211
def default_value_cache
  @default_value_cache ||= {}
end
default_value_for_property(node_name, prop) click to toggle source
# File lib/hyalite/dom_property.rb, line 199
def default_value_for_property(node_name, prop)
  node_defaults = default_value_cache[node_name]
  unless node_defaults
    default_value_cache[node_name] = node_defaults = {}
  end
  unless node_defaults.include? prop
    test_element = $document.create_element(node_name)
    node_defaults[prop] = test_element[prop]
  end
  node_defaults[prop]
end
include?(name) click to toggle source
# File lib/hyalite/dom_property.rb, line 195
def include?(name)
  PROPERTIES.has_key? name
end
is_custom_attribute(attribute_name) click to toggle source
# File lib/hyalite/dom_property.rb, line 215
def is_custom_attribute(attribute_name)
  !!(/^(data|aria)-[a-z_][a-z\d_.\-]*$/ =~ attribute_name)
end
property_info(name) click to toggle source
# File lib/hyalite/dom_property.rb, line 168
def property_info(name)
  return nil unless PROPERTIES.has_key? name.to_sym

  @property_info ||= {}
  unless @property_info.has_key? name
    property = PROPERTIES[name.to_sym]

    attribute_name = DOM_ATTRIBUTE_NAMES.has_key?(name) ? DOM_ATTRIBUTE_NAMES[name] : name.downcase

    @property_info[name] = {
      attribute_name: attribute_name,
      attribute_namespace: nil,
      property_name: name,
      mutation_method: nil,
      must_use_attribute: property && property & MUST_USE_ATTRIBUTE > 0,
      must_use_property: property && property & MUST_USE_PROPERTY > 0,
      has_side_effects: property && property & HAS_SIDE_EFFECTS > 0,
      has_boolean_value: property && property & HAS_BOOLEAN_VALUE > 0,
      has_numeric_value: property && property & HAS_NUMERIC_VALUE > 0,
      has_positive_numeric_value: property && property & HAS_POSITIVE_NUMERIC_VALUE > 0,
      has_overloaded_boolean_value: property && property & HAS_OVERLOADED_BOOLEAN_VALUE > 0
    }
  end

  @property_info[name]
end