sitediff 0.0.2 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,63 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <!-- important: otherwise chrome will choke on non-ascii characters -->
5
- <meta charset="utf-8" />
6
- <style>
7
- <%= SiteDiff::Diff.css %>
8
- </style>
9
- <title> SiteDiff Report </title>
10
- </head>
11
- <body>
12
- <div class="sitediff">
13
- <div class="legend">
14
- <%
15
- tags = %w[before after]
16
- tags.each do |tag| %>
17
- <% if tags.first != tag %> | <% end %>
18
- <% notes = ['base url']
19
- notes << 'cached' if cache.read_tags.include?(tag.to_sym) %>
20
- <strong><%= tag %></strong> (<%= notes.join(', ') %>):
21
- <a href="<%= eval(tag) %>"><%= eval(tag) %></a>
22
- <% end %>
23
- </div>
24
- <table class="results">
25
-
26
- <colgroup>
27
- <col class="before-col">
28
- <col class="after-col">
29
- <col class="both-col">
30
- <col class="path-col">
31
- <col class="diff-stat-col">
32
- </colgroup>
33
-
34
- <thead>
35
- <tr>
36
- <th> Before </th>
37
- <th> After </th>
38
- <th> Both </th>
39
- <th> Path </th>
40
- <th> Status </th>
41
- </tr>
42
- </thead>
43
-
44
- <% results.each do |result| %>
45
- <tr class="<%= result.status_text %>">
46
- <td class="before">
47
- <a href="<%= result.url(:before, before, cache) %>">[before]</a>
48
- </td>
49
- <td class="after">
50
- <a href="<%= result.url(:after, after, cache) %>">[after]</a>
51
- </td>
52
- <td class="both">
53
- <a href="/sidebyside<%= result.path %>">[both]</a>
54
- </td>
55
- <td class="path"><%= result.path %></td>
56
- <td class="status"><%= result.link %></td>
57
- </tr>
58
- <% end %>
59
-
60
- </table>
61
- </div>
62
- </body>
63
- </html>
@@ -1,33 +0,0 @@
1
- sanitization:
2
- - title: Strip Drupal.settings
3
- selector: script
4
- pattern: '^(<script>)?jQuery.extend\(Drupal.settings.*$'
5
- - title: Strip form build ID
6
- selector: input
7
- pattern: 'name="form_build_id" value="form-[-\w]{43}"'
8
- substitution: 'name="form_build_id" value="form-DRUPAL_FORM_BUILD_ID"'
9
- - title: Strip view DOM ID
10
- pattern: '(class="view .*) view-dom-id-[a-f0-9]{32}"'
11
- substitution: '\1 view-dom-id-DRUPAL_VIEW_DOM_ID"'
12
- - title: Strip CSS aggregation filenames
13
- selector: link[rel=stylesheet]
14
- pattern: '(href="[^"]*/files/css/css_)[-\w]{43}\.css"'
15
- substitution: '\1DRUPAL_AGGREGATED_CSS.css"'
16
- - title: Strip JS aggregation filenames
17
- selector: script
18
- pattern: '(src="[^"]*/files/js/js_)[-\w]{43}\.js"'
19
- substitution: '\1DRUPAL_AGGREGATED_JS.js"'
20
- - title: Strip CSS/JS cache IDs
21
- selector: style, script
22
- pattern: '("[^"]*\.(js|css))\?[a-z0-9]{6}"'
23
- substitution: '\1'
24
- - title: Strip IE CSS/JS cache IDs
25
- pattern: '("[^"]*ie\d?\.(js|css))\?[a-z0-9]{6}"'
26
- substitution: '\1'
27
- - title: Strip Drupal JS version tags
28
- selector: script
29
- pattern: '(src="[^"]*/misc/\w+\.js)?v=\d+\.\d+"'
30
- substitution: '\1'
31
- - title: Strip domain names from absolute URLs
32
- pattern: 'http:\/\/[a-zA-Z0-9.:-]+'
33
- substitute: '__domain__'
@@ -1,65 +0,0 @@
1
- require 'sitediff/sanitize/regexp'
2
- require 'pathname'
3
- require 'set'
4
-
5
- class SiteDiff
6
- # Find appropriate rules for a given site
7
- class Rules
8
- def initialize(config, disabled = false)
9
- @disabled = disabled
10
- @config = config
11
- find_sanitization_candidates
12
- @rules = Hash.new { |h, k| h[k] = Set.new }
13
- end
14
-
15
- def find_sanitization_candidates
16
- @candidates = Set.new
17
-
18
- rules_dir = Pathname.new(__FILE__).dirname + 'files' + 'rules'
19
- rules_dir.children.each do |f|
20
- next unless f.file? && f.extname == '.yaml'
21
- conf = YAML.load_file(f)
22
- @candidates.merge(conf['sanitization'])
23
- end
24
- end
25
-
26
- def handle_page(tag, html, doc)
27
- found = find_rules(html, doc)
28
- @rules[tag].merge(found)
29
- end
30
-
31
- # Yield a set of rules that seem reasonable for this HTML
32
- # assumption: the YAML file is a list of regexp rules only
33
- def find_rules(html, doc)
34
- rules = []
35
-
36
- return @candidates.select do |rule|
37
- re = SiteDiff::Sanitizer::Regexp.create(rule)
38
- re.applies?(html, doc)
39
- end
40
- end
41
-
42
- # Find all rules from all rulesets that apply for all pages
43
- def add_config
44
- have_both = @rules.include?(:before)
45
-
46
- r1, r2 = *@rules.values_at(:before, :after)
47
- if have_both
48
- add_section('before', r1 - r2)
49
- add_section('after', r2 - r1)
50
- add_section(nil, r1 & r2)
51
- else
52
- add_section(nil, r2)
53
- end
54
- end
55
-
56
- def add_section(name, rules)
57
- return if rules.empty?
58
- conf = name ? @config[name] : @config
59
- if @disabled
60
- rules.each { |r| r['disabled'] = true }
61
- end
62
- conf['sanitization'] = rules.to_a.sort_by { |r| r['title'] }
63
- end
64
- end
65
- end