class Govuk::Diff::Pages::HtmlDiff::Differ
Constants
- REPLACEMENTS
Attributes
differing_pages[R]
Public Class Methods
new(config)
click to toggle source
# File lib/govuk/diff/pages/html_diff/differ.rb, line 18 def initialize(config) @config = config @template = File.read "#{Govuk::Diff::Pages.root_dir}/diff/pages/html_diff/assets/html_diff_template.erb" @diff_dir = File.join(Govuk::Diff::Pages.root_dir, '..', '..', @config.html_diff.directory) reset_html_diffs_dir @differing_pages = {} end
Public Instance Methods
diff(base_path)
click to toggle source
# File lib/govuk/diff/pages/html_diff/differ.rb, line 26 def diff(base_path) staging_html = get_normalized_html(staging_url(base_path)) production_html = get_normalized_html(production_url(base_path)) diffy = Diffy::Diff.new(production_html, staging_html, context: 3) unless diffy.diff == "" write_diff_page(base_path, diffy.to_s(:html)) @differing_pages[base_path] = html_diff_filename(base_path) end end
Private Instance Methods
fetch_html(url)
click to toggle source
# File lib/govuk/diff/pages/html_diff/differ.rb, line 70 def fetch_html(url) %x[ curl -s #{url} ] end
get_normalized_html(url)
click to toggle source
# File lib/govuk/diff/pages/html_diff/differ.rb, line 62 def get_normalized_html(url) body_html = Nokogiri::HTML(fetch_html(url)).css('body').to_s REPLACEMENTS.each do |original, replacement| body_html.gsub!(original, replacement) end body_html end
html_diff_filename(base_path)
click to toggle source
# File lib/govuk/diff/pages/html_diff/differ.rb, line 50 def html_diff_filename(base_path) File.join(@diff_dir, "#{safe_filename(base_path)}.html") end
production_url(base_path)
click to toggle source
# File lib/govuk/diff/pages/html_diff/differ.rb, line 74 def production_url(base_path) "#{@config.domains.production}#{base_path}" end
remove_starting_and_trailing_slash(base_path)
click to toggle source
# File lib/govuk/diff/pages/html_diff/differ.rb, line 58 def remove_starting_and_trailing_slash(base_path) base_path.sub(/^\//, '').sub(/\/$/, '') end
reset_html_diffs_dir()
click to toggle source
# File lib/govuk/diff/pages/html_diff/differ.rb, line 38 def reset_html_diffs_dir Dir.mkdir(@diff_dir) unless Dir.exist?(@diff_dir) FileUtils.rm Dir.glob("#{@diff_dir}/*") end
safe_filename(base_path)
click to toggle source
# File lib/govuk/diff/pages/html_diff/differ.rb, line 54 def safe_filename(base_path) remove_starting_and_trailing_slash(base_path).tr('/', '.') end
staging_url(base_path)
click to toggle source
# File lib/govuk/diff/pages/html_diff/differ.rb, line 78 def staging_url(base_path) "#{@config.domains.staging}#{base_path}" end
write_diff_page(base_path, diff_string)
click to toggle source
# File lib/govuk/diff/pages/html_diff/differ.rb, line 43 def write_diff_page(base_path, diff_string) renderer = ERB.new(@template) File.open(html_diff_filename(base_path), "w") do |fp| fp.puts renderer.result(binding) end end