Sha256: 3a6f388ff63a74499d547af21ade2213cdd3218b947073178fc8c8606b9e7944

Contents?: true

Size: 712 Bytes

Versions: 25

Compression:

Stored size: 712 Bytes

Contents

class Govspeak::HtmlValidator
  attr_reader :govspeak_string

  def initialize(govspeak_string, sanitization_options = {})
    @govspeak_string = govspeak_string.dup.force_encoding(Encoding::UTF_8)
    @sanitization_options = sanitization_options
  end

  def invalid?
    !valid?
  end

  def valid?
    dirty_html = govspeak_to_html
    clean_html = Govspeak::HtmlSanitizer.new(dirty_html, @sanitization_options).sanitize
    normalise_html(dirty_html) == normalise_html(clean_html)
  end

  # Make whitespace in html tags consistent
  def normalise_html(html)
    Nokogiri::HTML5.fragment(html).to_s
  end

  def govspeak_to_html
    Govspeak::Document.new(govspeak_string, sanitize: false).to_html
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
govspeak-6.8.0 lib/govspeak/html_validator.rb
govspeak-6.7.8 lib/govspeak/html_validator.rb
govspeak-6.7.7 lib/govspeak/html_validator.rb
govspeak-6.7.6 lib/govspeak/html_validator.rb
govspeak-6.7.5 lib/govspeak/html_validator.rb
govspeak-6.7.4 lib/govspeak/html_validator.rb
govspeak-6.7.3 lib/govspeak/html_validator.rb
govspeak-6.7.2 lib/govspeak/html_validator.rb
govspeak-6.7.1 lib/govspeak/html_validator.rb
govspeak-6.7.0 lib/govspeak/html_validator.rb
govspeak-6.6.0 lib/govspeak/html_validator.rb
govspeak-6.5.11 lib/govspeak/html_validator.rb
govspeak-6.5.10 lib/govspeak/html_validator.rb
govspeak-6.5.9 lib/govspeak/html_validator.rb
govspeak-6.5.8 lib/govspeak/html_validator.rb
govspeak-6.5.7 lib/govspeak/html_validator.rb
govspeak-6.5.6 lib/govspeak/html_validator.rb
govspeak-6.5.5 lib/govspeak/html_validator.rb
govspeak-6.5.4 lib/govspeak/html_validator.rb
govspeak-6.5.3 lib/govspeak/html_validator.rb