Skip to content

Commit 41c3c47

Browse files
committed
Merge pull request #12 from Bodacious/escapedStrings
Escaped strings in HTML/Javascript code
2 parents f5020ea + a8ceb58 commit 41c3c47

2 files changed

Lines changed: 14 additions & 14 deletions

File tree

lib/split/analytics.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ def tracking_code(options = {})
1515
code = <<-EOF
1616
<script type="text/javascript">
1717
var _gaq = _gaq || [];
18-
_gaq.push(['_setAccount', '#{account}']);
18+
_gaq.push(["_setAccount", "#{account}"]);
1919
#{insert_tracker_methods(tracker_methods)}
2020
#{custom_variables}
21-
_gaq.push(['_trackPageview']);
21+
_gaq.push(["_trackPageview"]);
2222
(function() {
2323
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
2424
ga.src = ('https:' == document.location.protocol ? '#{ssl_tracker_url}' : '#{tracker_url}');
@@ -34,7 +34,7 @@ def custom_variables
3434
return nil if session[:split].nil?
3535
arr = []
3636
session[:split].each_with_index do |h, i|
37-
arr << "_gaq.push(['_setCustomVar', #{i + 1}, '#{h[0]}', '#{h[1]}', 1]);"
37+
arr << "_gaq.push([\"_setCustomVar\", #{i + 1}, \"#{h[0]}\", \"#{h[1]}\", 1]);"
3838
end
3939
arr.reverse[0..4].reverse.join("\n")
4040
end
@@ -47,22 +47,22 @@ def insert_tracker_methods(tracker_methods)
4747
tracker_methods.each do |k, v|
4848
if v.class == String && v.empty?
4949
# No argument tracker method
50-
arr << "_gaq.push(['" + "_" + "#{k}']);"
50+
arr << "_gaq.push([\"" + "_" + "#{k}\"]);"
5151
else
5252
case v
5353
when String
5454
# String argument tracker method
55-
arr << "_gaq.push(['" + '_' + "#{k}', '#{v}']);"
55+
arr << "_gaq.push([\"" + '_' + "#{k}\", \"#{v}\"]);"
5656
when TrueClass
5757
# Boolean argument tracker method
58-
arr << "_gaq.push(['" + '_' + "#{k}', #{v}]);"
58+
arr << "_gaq.push([\"" + '_' + "#{k}\", #{v}]);"
5959
when FalseClass
6060
# Boolean argument tracker method
61-
arr << "_gaq.push(['" + '_' + "#{k}', #{v}]);"
61+
arr << "_gaq.push([\"" + '_' + "#{k}\", #{v}]);"
6262
when Array
6363
# Array argument tracker method
64-
values = v.map { |value| "'#{value}'" }.join(', ')
65-
arr << "_gaq.push(['" + '_' + "#{k}', #{values}]);"
64+
values = v.map { |value| "\"#{value}\"" }.join(', ')
65+
arr << "_gaq.push([\"" + '_' + "#{k}\", #{values}]);"
6666
end
6767
end
6868
end

spec/analytics_spec.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
include Split::Helper
55
it 'should generate valid analytics javascript' do
66
tracking_code = tracking_code(account: 'UA-12345-6')
7-
expect(tracking_code).to eql(" <script type=\"text/javascript\">\n var _gaq = _gaq || [];\n _gaq.push(['_setAccount', 'UA-12345-6']);\n \n \n _gaq.push(['_trackPageview']);\n (function() {\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol ? 'https://ssl.google-analytics.com/ga.js' : 'http://www.google-analytics.com/ga.js');\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n })();\n </script>\n")
7+
expect(tracking_code).to eql(%Q{ <script type=\"text/javascript\">\n var _gaq = _gaq || [];\n _gaq.push(["_setAccount", "UA-12345-6"]);\n \n \n _gaq.push(["_trackPageview"]);\n (function() {\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol ? 'https://ssl.google-analytics.com/ga.js' : 'http://www.google-analytics.com/ga.js');\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n })();\n </script>\n})
88
end
99

1010
it 'should generate valid analytics javascript with arbitrary tracker object methods' do
@@ -14,7 +14,7 @@
1414
clearOrganic: '' # No argument
1515
}
1616
tracking_code = tracking_code(:account => 'UA-12345-6', :tracker_methods => tracker_methods)
17-
expect(tracking_code).to eql(" <script type=\"text/javascript\">\n var _gaq = _gaq || [];\n _gaq.push(['_setAccount', 'UA-12345-6']);\n _gaq.push(['_setDomainName', 'example.com']);\n_gaq.push(['_setAllowLinker', true]);\n_gaq.push(['_clearOrganic']);\n \n _gaq.push(['_trackPageview']);\n (function() {\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol ? 'https://ssl.google-analytics.com/ga.js' : 'http://www.google-analytics.com/ga.js');\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n })();\n </script>\n")
17+
expect(tracking_code).to eql(%Q{ <script type=\"text/javascript\">\n var _gaq = _gaq || [];\n _gaq.push(["_setAccount", "UA-12345-6"]);\n _gaq.push(["_setDomainName", "example.com"]);\n_gaq.push(["_setAllowLinker", true]);\n_gaq.push(["_clearOrganic"]);\n \n _gaq.push(["_trackPageview"]);\n (function() {\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol ? 'https://ssl.google-analytics.com/ga.js' : 'http://www.google-analytics.com/ga.js');\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n })();\n </script>\n})
1818
end
1919

2020
it 'should add custom variables for every test the user is involved in' do
@@ -23,11 +23,11 @@
2323
session[:split].should eql({'link_colour' => first_alt})
2424

2525
tracking_code = tracking_code(account: 'UA-12345-6')
26-
expect(tracking_code).to eql(" <script type=\"text/javascript\">\n var _gaq = _gaq || [];\n _gaq.push(['_setAccount', 'UA-12345-6']);\n \n _gaq.push(['_setCustomVar', 1, 'link_colour', '#{first_alt}', 1]);\n _gaq.push(['_trackPageview']);\n (function() {\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol ? 'https://ssl.google-analytics.com/ga.js' : 'http://www.google-analytics.com/ga.js');\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n })();\n </script>\n")
26+
expect(tracking_code).to eql(%Q{ <script type=\"text/javascript\">\n var _gaq = _gaq || [];\n _gaq.push(["_setAccount", 'UA-12345-6']);\n \n _gaq.push(['_setCustomVar', 1, 'link_colour', '#{first_alt}', 1]);\n _gaq.push(["_trackPageview"]);\n (function() {\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol ? 'https://ssl.google-analytics.com/ga.js' : 'http://www.google-analytics.com/ga.js');\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n })();\n </script>\n})
2727
end
2828

2929
it 'uses doubleclick as tracker url' do
30-
tracking_code = tracking_code(account: 'UA-12345-6', tracker_url: 'stats.g.doubleclick.net/dc.js', :ssl_tracker_url => 'stats.g.doubleclick.net/dc.js')
31-
expect(tracking_code).to eql(" <script type=\"text/javascript\">\n var _gaq = _gaq || [];\n _gaq.push(['_setAccount', 'UA-12345-6']);\n \n \n _gaq.push(['_trackPageview']);\n (function() {\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol ? 'https://stats.g.doubleclick.net/dc.js' : 'http://stats.g.doubleclick.net/dc.js');\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n })();\n </script>\n")
30+
tracking_code = tracking_code(account: "UA-12345-6", tracker_url: 'stats.g.doubleclick.net/dc.js', :ssl_tracker_url => 'stats.g.doubleclick.net/dc.js')
31+
expect(tracking_code).to eql(%Q{ <script type=\"text/javascript\">\n var _gaq = _gaq || [];\n _gaq.push(["_setAccount", "UA-12345-6"]);\n \n \n _gaq.push(["_trackPageview"]);\n (function() {\n var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n ga.src = ('https:' == document.location.protocol ? 'https://stats.g.doubleclick.net/dc.js' : 'http://stats.g.doubleclick.net/dc.js');\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n })();\n </script>\n})
3232
end
3333
end

0 commit comments

Comments
 (0)