Sha256: b4522b355ed0335cfea594067aae59501597c794dba4dccd8ae80d566b8c110d

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

require 'html5'
require 'html5lib_sanitize'

# == Introduction
# 
# Inquisition will escape html included in specified attributes to
# eliminate xss-style attacks.
module Inquisition
  def self.included(klass)
    klass.extend(ClassMethods)
  end

  module ClassMethods

    # cleanse_attr creates getters and setters for the specified list of attributes.
    def cleanse_attr(*attributes)
      cleanse_attr_reader(*attributes)
      cleanse_attr_writer(*attributes)
    end

    def cleanse_attr_reader(*attributes)
      attributes.each do |attr|
        alias_method(:"#{attr}_without_cleansing", :"#{attr}")
        define_method(:"#{attr}") do
          HTML5libSanitize.sanitize_html(send(:"#{attr}_without_cleansing"))
        end
      end
    end

    def cleanse_attr_writer(*attributes)
      attributes.each do |attr|
        alias_method(:"#{attr}_without_cleansing=", :"#{attr}=")
        define_method(:"#{attr}=") do |value|
          send(:"#{attr}_without_cleansing=", HTML5libSanitize.sanitize_html(value))
        end
      end
    end
  end #Class Methods
end #Inquisition

class Object
  include Inquisition
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
thumblemonks-inquisition-0.1.0 lib/inquisition.rb