jekyll-analytics 0.1.2 → 0.1.4
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 +4 -4
- data/lib/analytics/GoogleAnalytics.rb +14 -16
- data/lib/analytics/Piwik.rb +43 -0
- data/lib/jekyll-analytics.rb +9 -5
- metadata +5 -4
- data/lib/analytics/Analytics.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa278f726aee0536eacff0f2487449e187afe53b
|
4
|
+
data.tar.gz: b6ed0d3b81297098cf07da24450df5b588052f25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af81e55d2d2b3f57ba8d365bb04fc0f795c4407e480111f58ff2ca5ec82f6f63859176aa90ff9a9304cca39c012a4a4065a3c55bc818a8282c73353a21b3cefe
|
7
|
+
data.tar.gz: 0bd95ae21095cb470b5d52932c0acfa811605c40ee011c1954e367fbfeeb2cb5445974caf0a08ca7b4b3669c9c9f1f9fad46a7c27fa60740d2ad476d45460047
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
class GoogleAnalytics < Analytics
|
1
|
+
class GoogleAnalytics
|
4
2
|
#source: https://developers.google.com/analytics/devguides/collection/analyticsjs/
|
5
3
|
SETUP_CODE = """
|
6
4
|
<!-- Google Analytics -->
|
@@ -15,31 +13,31 @@ class GoogleAnalytics < Analytics
|
|
15
13
|
<!-- End Google Analytics -->
|
16
14
|
"""
|
17
15
|
|
18
|
-
|
16
|
+
ID_RE = /^UA-\d+-\d+$/
|
19
17
|
|
20
18
|
INITIALIZE_CODE = "ga('create', '%s', 'auto');"
|
21
19
|
PAGEVIEW_CODE = "ga('send', 'pageview');"
|
22
20
|
ANONYMIZE_IP_CODE = "ga('set', 'anonymizeIp', %s);"
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
if !(ID_REGEX.match(config["id"]))
|
21
|
+
|
22
|
+
|
23
|
+
def initialize(config)
|
24
|
+
if !(ID_RE.match(config["id"]))
|
28
25
|
raise ArgumentError, 'Invalid Google analytics key. Id must look like UA-XXXXXX-Y'
|
29
26
|
end
|
30
27
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
28
|
+
@commands = []
|
29
|
+
@commands.push(INITIALIZE_CODE % config["id"])
|
30
|
+
@commands.push(PAGEVIEW_CODE)
|
31
|
+
_get_other_commands(config)
|
35
32
|
end
|
36
33
|
|
37
34
|
def render()
|
38
|
-
return SETUP_CODE %
|
35
|
+
return SETUP_CODE % @commands.join("\n\t")
|
39
36
|
end
|
40
37
|
|
38
|
+
private
|
39
|
+
|
41
40
|
def _get_other_commands(config)
|
42
|
-
|
41
|
+
@commands.push(ANONYMIZE_IP_CODE % config.fetch(:anonymizeIp, false))
|
43
42
|
end
|
44
|
-
|
45
43
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class Piwik
|
2
|
+
SETUP_CODE = """
|
3
|
+
<!-- Piwik -->
|
4
|
+
<script type=\"text/javascript\">
|
5
|
+
var _paq = _paq || [];
|
6
|
+
_paq.push(['trackPageView']);
|
7
|
+
_paq.push(['enableLinkTracking']);
|
8
|
+
(function() {
|
9
|
+
var u=\"%{url}\";
|
10
|
+
_paq.push(['setTrackerUrl', u+'/piwik.php']);
|
11
|
+
_paq.push(['setSiteId', '%{siteId}']);
|
12
|
+
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
13
|
+
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
|
14
|
+
})();
|
15
|
+
</script>
|
16
|
+
<!-- End Piwik Code -->
|
17
|
+
"""
|
18
|
+
|
19
|
+
|
20
|
+
# domain name (characters separated by a dot), optional port, optional URI path, no slash
|
21
|
+
DOMAINPATH_RE = /^(([^.\/?#@:]+\.)*[^.\/?#@:]+)+(:[0-9]+)?(\/[^\/?#@:]+)*$/
|
22
|
+
|
23
|
+
# numeric ID
|
24
|
+
SITEID_RE = /^\d+$/
|
25
|
+
|
26
|
+
def initialize(config)
|
27
|
+
|
28
|
+
if !(DOMAINPATH_RE.match(config['url']))
|
29
|
+
raise ArgumentError, 'Invalid url. Must be a domain name, optionally followed by an URI path, no trailing slash (e.g. piwik.example.com or my.piwik.server/path)'
|
30
|
+
end
|
31
|
+
|
32
|
+
if !(SITEID_RE.match(config['siteId']))
|
33
|
+
raise ArgumentError, 'Invalid site id. Must be a number.'
|
34
|
+
end
|
35
|
+
|
36
|
+
@config = Hash[config.map{ |k, v| [k.to_sym, v.to_s] }]
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
def render
|
41
|
+
return SETUP_CODE % @config
|
42
|
+
end
|
43
|
+
end
|
data/lib/jekyll-analytics.rb
CHANGED
@@ -1,14 +1,18 @@
|
|
1
|
-
|
1
|
+
Dir[File.dirname(__FILE__) + '/analytics/*.rb'].each {|file| require file[0..-4] }
|
2
|
+
|
3
|
+
CONFIG_KEY = "jekyll_analytics"
|
2
4
|
|
3
5
|
def inject(site)
|
4
6
|
if ENV['JEKYLL_ENV']
|
5
|
-
|
6
|
-
|
7
|
-
|
7
|
+
site.site.config[CONFIG_KEY].keys().each{ |a|
|
8
|
+
analyzerClass = Module.const_get(a)
|
9
|
+
config = site.site.config[CONFIG_KEY][a]
|
10
|
+
analytics_object = analyzerClass.new(config)
|
11
|
+
site.output = site.output.gsub(/(?=<\/head>)/i, analytics_object.render())
|
12
|
+
}
|
8
13
|
end
|
9
14
|
end
|
10
15
|
|
11
|
-
|
12
16
|
Jekyll::Hooks.register :pages, :post_render do |page|
|
13
17
|
inject(page)
|
14
18
|
end
|
metadata
CHANGED
@@ -1,23 +1,24 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-analytics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hendrik Schneider
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: Plugin to easily add web analytics to your jekyll site
|
13
|
+
description: Plugin to easily add web analytics to your jekyll site without modifying
|
14
|
+
your templates
|
14
15
|
email: ''
|
15
16
|
executables: []
|
16
17
|
extensions: []
|
17
18
|
extra_rdoc_files: []
|
18
19
|
files:
|
19
|
-
- lib/analytics/Analytics.rb
|
20
20
|
- lib/analytics/GoogleAnalytics.rb
|
21
|
+
- lib/analytics/Piwik.rb
|
21
22
|
- lib/jekyll-analytics.rb
|
22
23
|
homepage: https://github.com/hendrik91/jekyll-analytics
|
23
24
|
licenses:
|