1# This file is part of python-markups module
2# License: 3-clause BSD, see LICENSE file
3# Copyright: (C) Dmitry Shachnev, 2012-2021
4
5import os.path
6from typing import Optional, Tuple
7
8# Some common constants and functions
9(LANGUAGE_HOME_PAGE, MODULE_HOME_PAGE, SYNTAX_DOCUMENTATION) = range(3)
10CONFIGURATION_DIR = (os.getenv('XDG_CONFIG_HOME') or os.getenv('APPDATA') or
11	os.path.expanduser('~/.config'))
12MATHJAX2_LOCAL_URLS = (
13	'file:///usr/share/javascript/mathjax/MathJax.js',  # Debian libjs-mathjax
14	'file:///usr/share/mathjax2/MathJax.js',  # Arch Linux mathjax2
15)
16MATHJAX3_LOCAL_URLS = (
17	'file:///usr/share/mathjax/tex-chtml.js',  # Arch Linux mathjax
18)
19MATHJAX_WEB_URL = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js'
20
21PYGMENTS_STYLE = 'default'
22
23def get_pygments_stylesheet(selector: Optional[str], style: Optional[str] = None) -> str:
24	if style is None:
25		style = PYGMENTS_STYLE
26	if style == '':
27		return ''
28	try:
29		from pygments.formatters import HtmlFormatter
30	except ImportError:
31		return ''
32	else:
33		return HtmlFormatter(style=style).get_style_defs(selector) + '\n'
34
35def get_mathjax_url_and_version(webenv: bool) -> Tuple[str, int]:
36	if not webenv:
37		for url in MATHJAX3_LOCAL_URLS:
38			if os.path.exists(url[7:]):  # strip file://
39				return url, 3
40		for url in MATHJAX2_LOCAL_URLS:
41			if os.path.exists(url[7:]):
42				return url, 2
43	return MATHJAX_WEB_URL, 3
44