Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
from datetime import datetime, timedelta
from mkdocs import utils as mkdocs_utils
from mkdocs.config import config_options, Config
from mkdocs.plugins import BasePlugin
import mkdocs.structure.files
from jsmin import jsmin
from htmlmin import minify
class MinifyPlugin(BasePlugin):
config_scheme = (
('minify_html', mkdocs.config.config_options.Type(bool, default=False)),
('htmlmin_opts', mkdocs.config.config_options.Type((str, dict), default=None)),
('minify_js', mkdocs.config.config_options.Type(bool, default=False)),
('js_files', mkdocs.config.config_options.Type((str, list), default=None))
)
def __init__(self):
self.enabled = True
self.total_time = 0
def on_post_page(self, output_content, page, config):
if self.config['minify_html']:
opts = self.config['htmlmin_opts'] or {}
for key in opts:
if key not in ['remove_comments','remove_empty_space','remove_all_empty_space','reduce_boolean_attributes','remove_optional_attribute_quotes','conver_charrefs','keep_pre','pre_tags','pre_attr']:
print("htmlmin option " + key + " not recognized")
return minify(output_content, opts.get("remove_comments", False), opts.get("remove_empty_space", False), opts.get("remove_all_empty_space", False), opts.get("reduce_empty_attributes", True), opts.get("reduce_boolean_attributes", False), opts.get("remove_optional_attribute_quotes", True), opts.get("convert_charrefs", True), opts.get("keep_pre", False), opts.get("pre_tags", ('pre', 'textarea')), opts.get("pre_tags", 'pre'))
else:
return output_content
import os
import sys
from pprint import pprint
from timeit import default_timer as timer
from datetime import datetime, timedelta
from mkdocs import utils as mkdocs_utils
from mkdocs.config import config_options, Config
from mkdocs.plugins import BasePlugin
from github import Github
class GitCommittersPlugin(BasePlugin):
config_scheme = (
('enterprise_hostname', config_options.Type(str, default='')),
('repository', config_options.Type(str, default='')),
('branch', config_options.Type(str, default='master')),
('docs_path', config_options.Type(str, default='docs/')),
('token', config_options.Type(str, default='')),
)
def __init__(self):
self.enabled = False
self.total_time = 0
self.branch = 'master'
def on_config(self, config):
if 'MKDOCS_GIT_COMMITTERS_APIKEY' in os.environ:
self.config['token'] = os.environ['MKDOCS_GIT_COMMITTERS_APIKEY']
if self.config['token'] and self.config['token'] != '':
self.enabled = True
def run_validation(self, value):
if isinstance(value, str):
value = [value]
elif not isinstance(value, (list, tuple)):
raise config_options.ValidationError('Expected a list of language codes.')
for lang in value:
if lang != 'en' and not self.lang_file_exists(lang):
raise config_options.ValidationError(
'"{}" is not a supported language code.'.format(lang)
)
return value
self.dest_path = self._get_dest_path(use_directory_urls)
self.abs_dest_path = os.path.normpath(os.path.join(site_dir, self.dest_path))
self.url = self._get_url(use_directory_urls)
def __getattr__(self, item):
return self.file.__getattribute__(item)
def is_documentation_page(self):
return True
class Plugin(mkdocs.plugins.BasePlugin):
config_scheme = (
("execute", mkdocs.config.config_options.Type(bool, default=False)),
("allow_errors", mkdocs.config.config_options.Type(bool, default=False)),
("preamble", mkdocs.config.config_options.FilesystemObject()),
("timeout", mkdocs.config.config_options.Type(int)),
("write_markdown", mkdocs.config.config_options.Type(bool, default=False)),
(
"enable_default_jupyter_cell_styling",
mkdocs.config.config_options.Type(bool, default=True),
),
(
"enable_default_pandas_dataframe_styling",
mkdocs.config.config_options.Type(bool, default=True),
),
)
def on_config(self, config: MkDocsConfig):
exporter_config = Config()
if self.config["execute"]:
default_preprocessors = MarkdownExporter.default_preprocessors.default_args[
from mkdocs.config import config_options, Config
from mkdocs.plugins import BasePlugin
from mkdocs.structure.files import Files
from mkdocs.structure.nav import Navigation as MkDocsNavigation
from .navigation import AwesomeNavigation
from .options import Options
class AwesomePagesPlugin(BasePlugin):
DEFAULT_META_FILENAME = '.pages'
config_scheme = (
('filename', config_options.Type(str, default=DEFAULT_META_FILENAME)),
('collapse_single_pages', config_options.Type(bool, default=False)),
('strict', config_options.Type(bool, default=True))
)
def on_nav(self, nav: MkDocsNavigation, config: Config, files: Files):
return AwesomeNavigation(nav, Options(**self.config)).to_mkdocs()