pageflow-chart 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3834ff2c73f8f33f70e43de722ed33e5a763ebe078ac4345074b8c7e49ebf3d
4
- data.tar.gz: ab502c12ff710d698df3418fd572f3153d6981b0526cd9a635adc2ab1f8cbe64
3
+ metadata.gz: cf67574bc3fc0e11ee66f37634eeab5b73ff6105ef6c281b022b24fad99fd854
4
+ data.tar.gz: 21cad9381bcc4c3cc312726b8b4b3b2e8c8a3f4b4f8ef54255848d348ed31a90
5
5
  SHA512:
6
- metadata.gz: e326231888b882249d84824451b0449d598aca5b9c78f6842b20111ffe4c9c0b7079f3966cd0a654c4552cf59eb1c57442556c0cfe5370b194e46f1be1b12525
7
- data.tar.gz: e14b7bacc6d778ca93764d48fc2f8fd5e484569cab89edf395848e478699fe0ab91ea6e0944315550aceae6e226428aa9bab678b0e9a9bb8887dfa5687b7c93d
6
+ metadata.gz: 0f778a73ae92747c4a43e80e8443edd74dc0ecd5056278195b623182108c905b3abef2f48833fb64e7b49d58b9f64fffffe7eaf854c9fb61a896bf57c37c4205
7
+ data.tar.gz: 15ec876b421dc8ba87d71ec9dc88d007cff39ec3658ce44e8c2bf702d75be6f1130506b8daec5d4ed0ebad453bf3726088d7b7aa2b8ea9ce645f6dc809206dc8
@@ -1,16 +1,14 @@
1
1
  # CHANGELOG
2
2
 
3
- ### Version 2.2.0
3
+ ### Version 2.3.0
4
4
 
5
- 2019-11-04
5
+ 2020-05-11
6
6
 
7
- [Compare changes](https://github.com/codevise/pageflow-chart/compare/2-1-stable...v2.2.0)
7
+ [Compare changes](https://github.com/codevise/pageflow-chart/compare/2-2-stable...v2.3.0)
8
8
 
9
- #### Manual Update Step
10
-
11
- - Turn scraped site into file type. Install migrations.
12
- ([#55](https://github.com/codevise/pageflow-chart/pull/55))
9
+ - Support Datawrapper charts with script tags in body
10
+ ([#56](https://github.com/codevise/pageflow-chart/pull/56))
13
11
 
14
12
  See
15
- [2-1-stable branch](https://github.com/codevise/pageflow-chart/blob/2-1-stable/CHANGELOG.md)
13
+ [2-2-stable branch](https://github.com/codevise/pageflow-chart/blob/2-2-stable/CHANGELOG.md)
16
14
  for previous changes.
@@ -17,11 +17,18 @@ module Pageflow
17
17
  content_type: 'text/html'
18
18
  )
19
19
 
20
- downloader.load_all(scraper.javascript_urls,
20
+ downloader.load_all(scraper.javascript_urls_in_head,
21
21
  extension: '.js',
22
22
  before_each: begin_try_catch,
23
- after_each: end_try_catch) do |javascript_file|
24
- scraped_site.javascript_file = javascript_file
23
+ after_each: end_try_catch) do |javascript_head_file|
24
+ scraped_site.javascript_file = javascript_head_file
25
+ end
26
+
27
+ downloader.load_all(scraper.javascript_urls_in_body,
28
+ extension: '.js',
29
+ before_each: begin_try_catch,
30
+ after_each: end_try_catch) do |javascript_body_file|
31
+ scraped_site.javascript_body_file = javascript_body_file
25
32
  end
26
33
 
27
34
  downloader.load_all(scraper.stylesheet_urls,
@@ -4,11 +4,13 @@ module Pageflow
4
4
  include Pageflow::ReusableFile
5
5
 
6
6
  has_attached_file :javascript_file, Chart.config.paperclip_options(extension: 'js')
7
+ has_attached_file :javascript_body_file, Chart.config.paperclip_options(basename: 'all_body', extension: 'js')
7
8
  has_attached_file :stylesheet_file, Chart.config.paperclip_options(extension: 'css')
8
9
  has_attached_file :html_file, Chart.config.paperclip_options(extension: 'html')
9
10
  has_attached_file :csv_file, Chart.config.paperclip_options(basename: 'data', extension: 'csv')
10
11
 
11
12
  do_not_validate_attachment_file_type(:javascript_file)
13
+ do_not_validate_attachment_file_type(:javascript_body_file)
12
14
  do_not_validate_attachment_file_type(:stylesheet_file)
13
15
  do_not_validate_attachment_file_type(:html_file)
14
16
  do_not_validate_attachment_file_type(:csv_file)
@@ -85,7 +87,7 @@ module Pageflow
85
87
  end
86
88
 
87
89
  def attachments_for_export
88
- [javascript_file, stylesheet_file, html_file, csv_file]
90
+ [javascript_file, javascript_body_file, stylesheet_file, html_file, csv_file]
89
91
  end
90
92
  end
91
93
  end
@@ -0,0 +1,5 @@
1
+ class AddJavascriptBodyAttachmentToScrapedSite < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_attachment :pageflow_chart_scraped_sites, :javascript_body_file
4
+ end
5
+ end
@@ -22,6 +22,7 @@ module Pageflow
22
22
  #
23
23
  # @param [Hash] opts
24
24
  # @option opts [Array<Regexp>] :head_script_blacklist Script tags in page head are ignored if they match any of this list of regexes.
25
+ # @option opts [Array<Regexp>] :body_script_blacklist Script tags in page body are ignored if they match any of this list of regexes.
25
26
  # @option opts [Array<Regexp>] :inline_script_blacklist Inline script tags are ignored if they match any of this list of regexes.
26
27
  # @option opts [Array<String>] :selector_blacklist HTML-elements matched by selectors in this list will not be scraped.
27
28
  # @return [Hash]
@@ -55,6 +56,7 @@ module Pageflow
55
56
  def initialize
56
57
  @scraper_options = {
57
58
  head_script_blacklist: [/piwik/],
59
+ body_script_blacklist: [/piwik/],
58
60
  inline_script_blacklist: [/piwik/],
59
61
  selector_blacklist: ['body .noscript']
60
62
  }
@@ -3,7 +3,11 @@ require 'nokogiri'
3
3
  module Pageflow
4
4
  module Chart
5
5
  class Scraper
6
- attr_reader :document, :options, :javascript_urls, :stylesheet_urls
6
+ attr_reader :document,
7
+ :options,
8
+ :javascript_urls_in_head,
9
+ :javascript_urls_in_body,
10
+ :stylesheet_urls
7
11
 
8
12
  def initialize(html, options = {})
9
13
  @document = Nokogiri::HTML(html)
@@ -23,14 +27,21 @@ module Pageflow
23
27
  private
24
28
 
25
29
  def parse
26
- parse_javascript_urls
30
+ parse_javascript_urls(:head)
31
+ parse_javascript_urls(:body)
27
32
  parse_stylesheet_urls
28
33
  end
29
34
 
30
- def parse_javascript_urls
31
- @javascript_urls = filtered_script_tags_in_head.map do |tag|
35
+ def parse_javascript_urls(container)
36
+ script_tags = filtered_script_tags_in(container).map do |tag|
32
37
  tag[:src]
33
38
  end
39
+
40
+ if container.eql?(:head)
41
+ @javascript_urls_in_head = script_tags
42
+ else
43
+ @javascript_urls_in_body = script_tags
44
+ end
34
45
  end
35
46
 
36
47
  def parse_stylesheet_urls
@@ -42,7 +53,8 @@ module Pageflow
42
53
  def rewrite
43
54
  filter_inline_scripts
44
55
  filter_by_selectors
45
- combine_script_tags_in_head
56
+ combine_script_tags_in(:head)
57
+ combine_script_tags_in(:body)
46
58
  combine_css_link_tags
47
59
  end
48
60
 
@@ -66,12 +78,12 @@ module Pageflow
66
78
  end
67
79
  end
68
80
 
69
- def combine_script_tags_in_head
70
- script_tags_to_remove = script_src_tags_in_head
81
+ def combine_script_tags_in(container)
82
+ script_tags_to_remove = script_src_tags_in(container)
71
83
  return if script_tags_to_remove.empty?
72
84
 
73
85
  all_script_src_tag = Nokogiri::XML::Node.new('script', document)
74
- all_script_src_tag[:src] = 'all.js'
86
+ all_script_src_tag[:src] = container.eql?(:head) ? 'all.js' : 'all_body.js'
75
87
  all_script_src_tag[:type] = 'text/javascript'
76
88
 
77
89
  script_tags_to_remove
@@ -91,16 +103,16 @@ module Pageflow
91
103
  document.at_css('head') << all_css_link_tag
92
104
  end
93
105
 
94
- def filtered_script_tags_in_head
95
- script_src_tags_in_head.reject do |tag|
96
- options.fetch(:head_script_blacklist, []).any? do |regexp|
106
+ def filtered_script_tags_in(container)
107
+ script_src_tags_in(container).reject do |tag|
108
+ options.fetch("#{container}_script_blacklist".to_sym, []).any? do |regexp|
97
109
  tag[:src] =~ regexp
98
110
  end
99
111
  end
100
112
  end
101
113
 
102
- def script_src_tags_in_head
103
- document.css('head script[src]')
114
+ def script_src_tags_in(container)
115
+ document.css("#{container} script[src]")
104
116
  end
105
117
 
106
118
  def css_link_tags
@@ -1,5 +1,5 @@
1
1
  module Pageflow
2
2
  module Chart
3
- VERSION = '2.2.0'.freeze
3
+ VERSION = '2.3.0'.freeze
4
4
  end
5
5
  end
@@ -8,6 +8,7 @@ module Pageflow
8
8
  state { 'processed' }
9
9
 
10
10
  javascript_file { File.open(Engine.root.join('spec', 'fixtures', 'all.js')) }
11
+ javascript_body_file { File.open(Engine.root.join('spec', 'fixtures', 'all_body.js')) }
11
12
  stylesheet_file { File.open(Engine.root.join('spec', 'fixtures', 'all.css')) }
12
13
  html_file { File.open(Engine.root.join('spec', 'fixtures', 'index.html')) }
13
14
  csv_file { File.open(Engine.root.join('spec', 'fixtures', 'data.csv')) }
@@ -0,0 +1 @@
1
+ var chart_body = {};
@@ -31,7 +31,7 @@ module Pageflow::Chart
31
31
  scraped_site = ScrapedSite.new(url: 'http://example.com/foo/index.html')
32
32
 
33
33
  expect(scraped_site.attachments_for_export.map(&:name))
34
- .to eq(%i[javascript_file stylesheet_file html_file csv_file])
34
+ .to eq(%i[javascript_file javascript_body_file stylesheet_file html_file csv_file])
35
35
  end
36
36
 
37
37
  describe '#publish!' do
@@ -19,27 +19,67 @@ module Pageflow
19
19
  expect(scraper.html).to include('contents')
20
20
  end
21
21
 
22
- it 'combines script tags in head' do
22
+ it 'filters blacklisted selectors' do
23
23
  html = <<-HTML
24
24
  <!DOCTYPE html>
25
25
  <html>
26
26
  <head>
27
- <script type="text/javascript" src="/some.js"></script>
28
- <script type="text/javascript" src="/other.js"></script>
27
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
29
28
  </head>
30
29
  <body>
30
+ <div id="bad" class="noscript"></div>
31
+ <div id="good"></div>
31
32
  </body>
32
33
  </html>
33
34
  HTML
34
- scraper = Scraper.new(html)
35
+ scraper = Scraper.new(html, selector_blacklist: ['body .noscript'])
35
36
 
36
- expect(HtmlFragment.new(scraper.html)).not_to have_tag('head script[src="/some.js"]')
37
- expect(HtmlFragment.new(scraper.html)).to have_tag('head script[src="all.js"]')
37
+ expect(HtmlFragment.new(scraper.html)).to have_tag('body #good')
38
+ expect(HtmlFragment.new(scraper.html)).not_to have_tag('body #bad')
38
39
  end
39
40
 
40
- it 'inserts script tag at position of first script src tag to keep position' \
41
+ describe 'stylesheets in head' do
42
+ it 'combines link tags in head' do
43
+ html = <<-HTML
44
+ <!DOCTYPE html>
45
+ <html>
46
+ <head>
47
+ <link rel="stylesheet" type="text/css" href="/some.css">
48
+ <link rel="stylesheet" type="text/css" href="/other.css">
49
+ </head>
50
+ <body>
51
+ </body>
52
+ </html>
53
+ HTML
54
+ scraper = Scraper.new(html)
55
+
56
+ expect(HtmlFragment.new(scraper.html)).not_to have_tag('head link[href="/some.css"]')
57
+ expect(HtmlFragment.new(scraper.html)).to have_tag('head link[href="all.css"]')
58
+ end
59
+ end
60
+
61
+ describe 'scripts in head' do
62
+ it 'combines script tags in head' do
63
+ html = <<-HTML
64
+ <!DOCTYPE html>
65
+ <html>
66
+ <head>
67
+ <script type="text/javascript" src="/some.js"></script>
68
+ <script type="text/javascript" src="/other.js"></script>
69
+ </head>
70
+ <body>
71
+ </body>
72
+ </html>
73
+ HTML
74
+ scraper = Scraper.new(html)
75
+
76
+ expect(HtmlFragment.new(scraper.html)).not_to have_tag('head script[src="/some.js"]')
77
+ expect(HtmlFragment.new(scraper.html)).to have_tag('head script[src="all.js"]')
78
+ end
79
+
80
+ it 'inserts script tag at position of first script src tag to keep position ' \
41
81
  'between inline scripts' do
42
- html = <<-HTML
82
+ html = <<-HTML
43
83
  <!DOCTYPE html>
44
84
  <html>
45
85
  <head>
@@ -55,122 +95,220 @@ module Pageflow
55
95
  <body>
56
96
  </body>
57
97
  </html>
58
- HTML
59
- scraper = Scraper.new(html)
98
+ HTML
99
+ scraper = Scraper.new(html)
60
100
 
61
- fragment = HtmlFragment.new(scraper.html)
101
+ fragment = HtmlFragment.new(scraper.html)
62
102
 
63
- expect(fragment).to have_tags_in_order('head script#setup',
64
- 'head script[src="all.js"]',
65
- 'head script#usage')
103
+ expect(fragment).to have_tags_in_order('head script#setup',
104
+ 'head script[src="all.js"]',
105
+ 'head script#usage')
106
+ end
66
107
  end
67
108
 
68
- it 'combines link tags in head' do
69
- html = <<-HTML
109
+ describe 'scripts in body' do
110
+ it 'combines script tags in body' do
111
+ html = <<-HTML
70
112
  <!DOCTYPE html>
71
113
  <html>
72
114
  <head>
73
- <link rel="stylesheet" type="text/css" href="/some.css">
74
- <link rel="stylesheet" type="text/css" href="/other.css">
75
115
  </head>
76
116
  <body>
117
+ <script type="text/javascript" src="/some.js"></script>
118
+ <script type="text/javascript" src="/other.js"></script>
77
119
  </body>
78
120
  </html>
79
- HTML
80
- scraper = Scraper.new(html)
121
+ HTML
122
+ scraper = Scraper.new(html)
81
123
 
82
- expect(HtmlFragment.new(scraper.html)).not_to have_tag('head link[href="/some.css"]')
83
- expect(HtmlFragment.new(scraper.html)).to have_tag('head link[href="all.css"]')
84
- end
124
+ expect(HtmlFragment.new(scraper.html)).not_to have_tag('body script[src="/some.js"]')
125
+ expect(HtmlFragment.new(scraper.html)).to have_tag('body script[src="all_body.js"]')
126
+ end
85
127
 
86
- it 'filters blacklisted inline scripts' do
87
- html = <<-HTML
128
+ it 'inserts script tag at position of first script src tag to keep position ' \
129
+ 'between inline scripts' do
130
+ html = <<-HTML
88
131
  <!DOCTYPE html>
89
132
  <html>
90
133
  <head>
91
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
92
134
  </head>
93
135
  <body>
94
- <script id="good">window.ok = true;</script>
95
- <script id="bad">alert();</script>
136
+ <script id="setup">
137
+ // Some setup required for scripts below to execute
138
+ </script>
139
+ <script type="text/javascript" src="/some.js"></script>
140
+ <script type="text/javascript" src="/other.js"></script>
141
+ <script id="usage">
142
+ // Some script using stuff loading above
143
+ </script>
96
144
  </body>
97
145
  </html>
98
- HTML
99
- scraper = Scraper.new(html, inline_script_blacklist: [/alert/])
146
+ HTML
147
+ scraper = Scraper.new(html)
148
+
149
+ fragment = HtmlFragment.new(scraper.html)
150
+
151
+ expect(fragment).to have_tags_in_order('body script#setup',
152
+ 'body script[src="all_body.js"]',
153
+ 'body script#usage')
154
+ end
100
155
 
101
- expect(HtmlFragment.new(scraper.html)).to have_tag('body script#good')
102
- expect(HtmlFragment.new(scraper.html)).not_to have_tag('body script#bad')
156
+ it 'filters blacklisted inline scripts' do
157
+ html = <<-HTML
158
+ <!DOCTYPE html>
159
+ <html>
160
+ <head>
161
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
162
+ </head>
163
+ <body>
164
+ <script id="good">window.ok = true;</script>
165
+ <script id="bad">alert();</script>
166
+ </body>
167
+ </html>
168
+ HTML
169
+ scraper = Scraper.new(html, inline_script_blacklist: [/alert/])
170
+
171
+ expect(HtmlFragment.new(scraper.html)).to have_tag('body script#good')
172
+ expect(HtmlFragment.new(scraper.html)).not_to have_tag('body script#bad')
173
+ end
103
174
  end
175
+ end
104
176
 
105
- it 'filters blacklisted selectors' do
106
- html = <<-HTML
177
+ describe '#javascript_urls' do
178
+ describe 'scripts in head' do
179
+ it 'returns list of urls to javascript files' do
180
+ html = <<-HTML
107
181
  <!DOCTYPE html>
108
182
  <html>
109
183
  <head>
110
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
184
+ <script type="text/javascript" src="/some.js"></script>
185
+ <script type="text/javascript" src="/other.js"></script>
111
186
  </head>
112
187
  <body>
113
- <div id="bad" class="noscript"></div>
114
- <div id="good"></div>
115
188
  </body>
116
189
  </html>
117
- HTML
118
- scraper = Scraper.new(html, selector_blacklist: ['body .noscript'])
190
+ HTML
191
+ scraper = Scraper.new(html)
119
192
 
120
- expect(HtmlFragment.new(scraper.html)).to have_tag('body #good')
121
- expect(HtmlFragment.new(scraper.html)).not_to have_tag('body #bad')
122
- end
123
- end
193
+ expect(scraper.javascript_urls_in_head).to eq(['/some.js', '/other.js'])
194
+ end
124
195
 
125
- describe '#javascript_urls' do
126
- it 'returns list of urls to javascript files' do
127
- html = <<-HTML
196
+ it 'filters by blacklist' do
197
+ html = <<-HTML
128
198
  <!DOCTYPE html>
129
199
  <html>
130
200
  <head>
131
201
  <script type="text/javascript" src="/some.js"></script>
132
- <script type="text/javascript" src="/other.js"></script>
202
+ <script type="text/javascript" src="http://example.com/piwik.js"></script>
133
203
  </head>
134
204
  <body>
135
205
  </body>
136
206
  </html>
137
- HTML
138
- scraper = Scraper.new(html)
207
+ HTML
208
+ scraper = Scraper.new(html, head_script_blacklist: [/piwik/])
209
+
210
+ expect(scraper.javascript_urls_in_head).to eq(['/some.js'])
211
+ end
139
212
 
140
- expect(scraper.javascript_urls).to eq(['/some.js', '/other.js'])
213
+ it 'ignores inline scripts in head' do
214
+ html = <<-HTML
215
+ <!DOCTYPE html>
216
+ <html>
217
+ <head>
218
+ <script type="text/javascript"></script>
219
+ </head>
220
+ <body>
221
+ </body>
222
+ </html>
223
+ HTML
224
+ scraper = Scraper.new(html)
225
+
226
+ expect(scraper.javascript_urls_in_head).to eq([])
227
+ end
228
+
229
+ it 'ignores scripts in body' do
230
+ html = <<-HTML
231
+ <!DOCTYPE html>
232
+ <html>
233
+ <head>
234
+ </head>
235
+ <body>
236
+ <script type="text/javascript" src="/some.js"></script>
237
+ </body>
238
+ </html>
239
+ HTML
240
+ scraper = Scraper.new(html)
241
+
242
+ expect(scraper.javascript_urls_in_head).to eq([])
243
+ end
141
244
  end
142
245
 
143
- it 'filters by blacklist' do
144
- html = <<-HTML
246
+ describe 'scripts in body' do
247
+ it 'ignores scripts in head' do
248
+ html = <<-HTML
145
249
  <!DOCTYPE html>
146
250
  <html>
147
251
  <head>
148
252
  <script type="text/javascript" src="/some.js"></script>
149
- <script type="text/javascript" src="http://example.com/piwik.js"></script>
150
253
  </head>
151
254
  <body>
152
255
  </body>
153
256
  </html>
154
- HTML
155
- scraper = Scraper.new(html, head_script_blacklist: [/piwik/])
257
+ HTML
258
+ scraper = Scraper.new(html)
156
259
 
157
- expect(scraper.javascript_urls).to eq(['/some.js'])
158
- end
260
+ expect(scraper.javascript_urls_in_body).to eq([])
261
+ end
159
262
 
160
- it 'ignores inline scripts in head' do
161
- html = <<-HTML
263
+ it 'returns list of urls to javascript files' do
264
+ html = <<-HTML
162
265
  <!DOCTYPE html>
163
266
  <html>
164
267
  <head>
165
- <script type="text/javascript"></script>
166
268
  </head>
167
269
  <body>
270
+ <script type="text/javascript" src="/some.js"></script>
271
+ <script type="text/javascript" src="/other.js"></script>
168
272
  </body>
169
273
  </html>
170
- HTML
171
- scraper = Scraper.new(html)
274
+ HTML
275
+ scraper = Scraper.new(html)
276
+
277
+ expect(scraper.javascript_urls_in_body).to eq(['/some.js', '/other.js'])
278
+ end
279
+
280
+ it 'filters by blacklist' do
281
+ html = <<-HTML
282
+ <!DOCTYPE html>
283
+ <html>
284
+ <head>
285
+ </head>
286
+ <body>
287
+ <script type="text/javascript" src="/some.js"></script>
288
+ <script type="text/javascript" src="http://example.com/piwik.js"></script>
289
+ </body>
290
+ </html>
291
+ HTML
292
+ scraper = Scraper.new(html, body_script_blacklist: [/piwik/])
293
+
294
+ expect(scraper.javascript_urls_in_body).to eq(['/some.js'])
295
+ end
296
+
297
+ it 'ignores inline scripts in body' do
298
+ html = <<-HTML
299
+ <!DOCTYPE html>
300
+ <html>
301
+ <head>
302
+ </head>
303
+ <body>
304
+ <script type="text/javascript"></script>
305
+ </body>
306
+ </html>
307
+ HTML
308
+ scraper = Scraper.new(html)
172
309
 
173
- expect(scraper.javascript_urls).to eq([])
310
+ expect(scraper.javascript_urls_in_body).to eq([])
311
+ end
174
312
  end
175
313
  end
176
314
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pageflow-chart
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Codevise Solutions Ltd
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-04 00:00:00.000000000 Z
11
+ date: 2020-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pageflow
@@ -209,6 +209,7 @@ files:
209
209
  - db/migrate/20160211085234_add_use_custom_theme_to_scraped_sites.rb
210
210
  - db/migrate/20190531141820_add_file_attributes_to_scraped_sites.rb
211
211
  - db/migrate/20190531145431_insert_file_usages_for_scraped_sites.rb
212
+ - db/migrate/20200507141608_add_javascript_body_attachment_to_scraped_site.rb
212
213
  - lib/generators/pageflow_chart/install/install_generator.rb
213
214
  - lib/pageflow/chart.rb
214
215
  - lib/pageflow/chart/configuration.rb
@@ -221,6 +222,7 @@ files:
221
222
  - spec/factories/scraped_sites.rb
222
223
  - spec/fixtures/all.css
223
224
  - spec/fixtures/all.js
225
+ - spec/fixtures/all_body.js
224
226
  - spec/fixtures/data.csv
225
227
  - spec/fixtures/datawrapper.html
226
228
  - spec/fixtures/index.html
@@ -266,6 +268,7 @@ test_files:
266
268
  - spec/factories/scraped_sites.rb
267
269
  - spec/fixtures/all.css
268
270
  - spec/fixtures/all.js
271
+ - spec/fixtures/all_body.js
269
272
  - spec/fixtures/data.csv
270
273
  - spec/fixtures/datawrapper.html
271
274
  - spec/fixtures/index.html