Skip to content

Commit

Permalink
Update analytics for docs
Browse files Browse the repository at this point in the history
  • Loading branch information
smathot committed Apr 26, 2023
1 parent e777592 commit 77af4fb
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 80 deletions.
166 changes: 92 additions & 74 deletions doc-pelican/build-menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,102 +6,120 @@
import sys

if '--publish' in sys.argv:
import publishconf as conf
import publishconf as conf
else:
import pelicanconf as conf
import pelicanconf as conf

ROOT = conf.SITEURL
SUFFIX = ''


def orderedLoad(stream, Loader=yaml.Loader, object_pairs_hook=OrderedDict):

class OrderedLoader(Loader):
pass
def construct_mapping(loader, node):
loader.flatten_mapping(node)
return object_pairs_hook(loader.construct_pairs(node))
OrderedLoader.add_constructor(
yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG,
construct_mapping)
return yaml.load(stream, OrderedLoader)
class OrderedLoader(Loader):
pass
def construct_mapping(loader, node):
loader.flatten_mapping(node)
return object_pairs_hook(loader.construct_pairs(node))
OrderedLoader.add_constructor(
yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG,
construct_mapping)
return yaml.load(stream, OrderedLoader)

def isseparator(pagename):

for ch in pagename:
if ch != '_':
return False
return True
for ch in pagename:
if ch != '_':
return False
return True


def build_menu(d, lvl=1):

l = []
for pagename, entry in d.items():
if isseparator(pagename):
l.append('</ul></li>\n<li class="col-sm-3"><ul>')
continue
if entry is None:
l.append('%s<li class="dropdown-header dropdown-header-level-%d">%s</li>' \
% ('\t'*lvl, lvl, pagename))
continue
if isinstance(entry, dict):
if lvl == 1:
l.append(
('<li class="dropdown mega-dropdown">'
'<a href="#" class="dropdown-toggle level-%d" data-toggle="dropdown">'
'%s&nbsp;<span class="glyphicon glyphicon-menu-down"></span></a>') \
% (lvl+1, pagename))
l.append('<ul class="dropdown-menu mega-dropdown-menu row"><li class="col-sm-3"><ul>')
l.append(build_menu(entry, lvl+1))
l.append('</ul></li></ul></li>')
else:
l.append('%s<li class="dropdown-header dropdown-header-level-%d">%s</li>' \
% ('\t'*(lvl+1), lvl+1, pagename))
l.append(build_menu(entry, lvl+1))
continue
if entry.startswith('http'):
l.append('%s<li class="level-%d"><a href="%s">%s</a></li>' \
% ('\t'*lvl, lvl, entry, pagename))
else:
l.append('%s<li class="level-%d"><a href="%s/%s%s">%s</a></li>' \
% ('\t'*lvl, lvl, ROOT, entry, SUFFIX, pagename))
return '\n'.join(l)
l = []
for pagename, entry in d.items():
if isseparator(pagename):
l.append('</ul></li>\n<li class="col-sm-3"><ul>')
continue
if entry is None:
l.append('%s<li class="dropdown-header dropdown-header-level-%d">%s</li>' \
% ('\t'*lvl, lvl, pagename))
continue
if isinstance(entry, dict):
if lvl == 1:
l.append(
('<li class="dropdown mega-dropdown">'
'<a href="#" class="dropdown-toggle level-%d" data-toggle="dropdown">'
'%s&nbsp;<span class="glyphicon glyphicon-menu-down"></span></a>') \
% (lvl+1, pagename))
l.append('<ul class="dropdown-menu mega-dropdown-menu row"><li class="col-sm-3"><ul>')
l.append(build_menu(entry, lvl+1))
l.append('</ul></li></ul></li>')
else:
l.append('%s<li class="dropdown-header dropdown-header-level-%d">%s</li>' \
% ('\t'*(lvl+1), lvl+1, pagename))
l.append(build_menu(entry, lvl+1))
continue
if entry.startswith('http'):
l.append('%s<li class="level-%d"><a href="%s">%s</a></li>' \
% ('\t'*lvl, lvl, entry, pagename))
else:
l.append('%s<li class="level-%d"><a href="%s/%s%s">%s</a></li>' \
% ('\t'*lvl, lvl, ROOT, entry, SUFFIX, pagename))
return '\n'.join(l)


def build_live_sitemap(d):

sitemap = OrderedDict()
for pagename, entry in d.items():
if isinstance(entry, list):
cls = entry[1]
entry = entry[0]
else:
cls = ''
if isseparator(pagename) or entry in [None, '']:
continue
if isinstance(entry, dict):
sitemap[pagename] = build_live_sitemap(entry)
continue
if entry.startswith('http'):
sitemap[pagename] = entry
else:
sitemap[pagename] = '/' + conf.BRANCH + '/' + entry + SUFFIX
return sitemap
sitemap = OrderedDict()
for pagename, entry in d.items():
if isinstance(entry, list):
cls = entry[1]
entry = entry[0]
else:
cls = ''
if isseparator(pagename) or entry in [None, '']:
continue
if isinstance(entry, dict):
sitemap[pagename] = build_live_sitemap(entry)
continue
if entry.startswith('http'):
sitemap[pagename] = entry
else:
sitemap[pagename] = '/' + conf.BRANCH + '/' + entry + SUFFIX
return sitemap


def build_seo_sitemap(d):

sitemap = []
for pagename, entry in d.items():
if isseparator(pagename) or entry in [None, '']:
continue
if isinstance(entry, dict):
sitemap += build_seo_sitemap(entry)
continue
if not entry.startswith('http'):
sitemap.append(ROOT + '/' + entry + SUFFIX)
return sitemap


def main():

with open('sitemap.yaml') as f:
d = orderedLoad(f)
with open('themes/cogsci/templates/mega-menu-content.html', 'w') as f:
f.write(build_menu(d))
print('Generated menu content')
sitemap = build_live_sitemap(d)
with open(u'static/sitemap.yml', u'w') as fd:
yaml.dump(sitemap, fd, default_flow_style=False)
print('Generated live sitemap')
with open('sitemap.yaml') as f:
d = orderedLoad(f)
with open('themes/cogsci/templates/mega-menu-content.html', 'w') as f:
f.write(build_menu(d))
print('Generated menu content')
sitemap = build_live_sitemap(d)
with open(u'static/sitemap.yml', u'w') as fd:
yaml.dump(sitemap, fd, default_flow_style=False)
print('Generated live sitemap')
with open('static/seo-sitemap.txt', 'w') as fd:
fd.write('\n'.join(build_seo_sitemap(d)) + '\n')
print('Generated seo sitemap')


if __name__ == '__main__':
main()
main()
11 changes: 11 additions & 0 deletions doc-pelican/static/seo-sitemap.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
https://pydatamatrix.eu/1.0/install
https://pydatamatrix.eu/1.0/basic
https://pydatamatrix.eu/1.0/memoization
https://pydatamatrix.eu/1.0/largedata
https://pydatamatrix.eu/1.0/eyelinkparser
https://pydatamatrix.eu/1.0/convert
https://pydatamatrix.eu/1.0/functional
https://pydatamatrix.eu/1.0/io
https://pydatamatrix.eu/1.0/operations
https://pydatamatrix.eu/1.0/series
https://pydatamatrix.eu/1.0/multidimensional
13 changes: 7 additions & 6 deletions doc-pelican/themes/cogsci/templates/google-analytics.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-4S5YXJVREK"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-26205412-1', 'auto');
ga('send', 'pageview');
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', 'G-4S5YXJVREK');
</script>

0 comments on commit 77af4fb

Please sign in to comment.