1# Copyright 2022 The Pigweed Authors 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4# use this file except in compliance with the License. You may obtain a copy of 5# the License at 6# 7# https://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12# License for the specific language governing permissions and limitations under 13# the License. 14"""A Sphinx extension to add a Google Analytics tag to generated docs""" 15 16 17def add_google_analytics_tag(app, pagename, templatename, context, doctree): # pylint: disable=unused-argument 18 if app.config.google_analytics_id is None: 19 return 20 21 if 'metatags' not in context: 22 context['metatags'] = '' 23 24 # pylint: disable=line-too-long 25 context['metatags'] += ( 26 f"""<script async src="https://www.googletagmanager.com/gtag/js?id={app.config.google_analytics_id}"></script> 27<script> 28 window.dataLayer = window.dataLayer || []; 29 function gtag(){{dataLayer.push(arguments);}} 30 gtag('js', new Date()); 31 32 gtag('config', '{app.config.google_analytics_id}'); 33</script>""") 34 35 36def setup(app): 37 app.add_config_value('google_analytics_id', None, 'html') 38 app.connect('html-page-context', add_google_analytics_tag) 39 return {'parallel_read_safe': True} 40