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( 18 app, pagename, templatename, context, doctree 19): # pylint: disable=unused-argument 20 if app.config.google_analytics_id is None: 21 return 22 23 if 'metatags' not in context: 24 context['metatags'] = '' 25 26 # pylint: disable=line-too-long 27 context[ 28 'metatags' 29 ] += f"""<script async src="https://www.googletagmanager.com/gtag/js?id={app.config.google_analytics_id}"></script> 30<script> 31 window.dataLayer = window.dataLayer || []; 32 function gtag(){{dataLayer.push(arguments);}} 33 gtag('js', new Date()); 34 35 gtag('config', '{app.config.google_analytics_id}'); 36</script>""" 37 38 39def setup(app): 40 app.add_config_value('google_analytics_id', None, 'html') 41 app.connect('html-page-context', add_google_analytics_tag) 42 return {'parallel_read_safe': True} 43