module WabisabiValidator

Constants

ATTR
STYLE
STYLE_ATTR
TAGS
URL
URL_ATTR
VALID_ATTR
VALID_TAGS

Public Class Methods

valid?(w) click to toggle source
# File vendor/qwik/lib/qwik/wabisabi-validator.rb, line 53
def valid?(w)
  w.traverse_element {|e|
    element_name = e[0]
    next unless element_name.is_a?(Symbol)
    unless TAGS.include?(element_name)
      return element_name    # Invalid
    end

    attr = e.attr
    next if attr.nil?
    attr.each {|k, v|
      unless ATTR.include?(k)
        return k             # Invalid
      end

      if URL.include?(k)     # k is URL
        vs = v.to_s
        if /\Ahttps?:\/\// =~ vs
          # OK
        elsif /\A[-\w\.]+\z/ =~ vs
          # OK
        else
          #if /\Ajavascript/i =~ vs
          return 'Invalid URL'       # Invalid URL
        end
      end

      if STYLE.include?(k)           # k is style
        style = v.to_s
        unless CSS.valid?(style)
          return 'Invalid CSS'       # Invalid CSS
        end
      end
    }
  }
  return true
end

Private Instance Methods

valid?(w) click to toggle source
# File vendor/qwik/lib/qwik/wabisabi-validator.rb, line 53
def valid?(w)
  w.traverse_element {|e|
    element_name = e[0]
    next unless element_name.is_a?(Symbol)
    unless TAGS.include?(element_name)
      return element_name    # Invalid
    end

    attr = e.attr
    next if attr.nil?
    attr.each {|k, v|
      unless ATTR.include?(k)
        return k             # Invalid
      end

      if URL.include?(k)     # k is URL
        vs = v.to_s
        if /\Ahttps?:\/\// =~ vs
          # OK
        elsif /\A[-\w\.]+\z/ =~ vs
          # OK
        else
          #if /\Ajavascript/i =~ vs
          return 'Invalid URL'       # Invalid URL
        end
      end

      if STYLE.include?(k)           # k is style
        style = v.to_s
        unless CSS.valid?(style)
          return 'Invalid CSS'       # Invalid CSS
        end
      end
    }
  }
  return true
end