module Deface::OriginalValidator

Public Instance Methods

original_source() click to toggle source
# File lib/deface/original_validator.rb, line 4
def original_source
  return nil unless @args[:original].present?

  Deface::Parser.convert(@args[:original].clone)
end
validate_original(match) click to toggle source

logs if original source has changed

# File lib/deface/original_validator.rb, line 11
def validate_original(match)
  match = match.map(&:to_s).join if match.is_a? Array

  hashed_original = ::Digest::SHA1.hexdigest(match.to_s.gsub(/\s/, ''))

  if @args[:original].present?
    valid = @args[:original] == hashed_original

    unless valid
      valid = self.original_source.to_s.gsub(/\s/, '') == match.to_s.gsub(/\s/, '')
    end

    if !valid && defined?(Rails.logger)
      Rails.logger.error "\e[1;32mDeface: [ERROR]\e[0m The original source for '#{self.name}' has changed, this override should be reviewed to ensure it's still valid."
    end

    return valid
  else
    Rails.logger.info "\e[1;32mDeface: [WARNING]\e[0m No :original defined for '#{self.name}', you should change its definition to include:\n :original => '#{hashed_original}' "

    return nil
  end
end