summaryrefslogtreecommitdiff
path: root/src/tools/docwriter/siteconfig.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/docwriter/siteconfig.py')
-rw-r--r--src/tools/docwriter/siteconfig.py297
1 files changed, 0 insertions, 297 deletions
diff --git a/src/tools/docwriter/siteconfig.py b/src/tools/docwriter/siteconfig.py
deleted file mode 100644
index 347f35201..000000000
--- a/src/tools/docwriter/siteconfig.py
+++ /dev/null
@@ -1,297 +0,0 @@
-#
-# siteconfig.py
-#
-# Build site configuration and write to mkdocs.yml.
-#
-# Copyright 2018 by
-# Nikhil Ramakrishnan.
-#
-# This file is part of the FreeType project, and may only be used,
-# modified, and distributed under the terms of the FreeType project
-# license, LICENSE.TXT. By continuing to use, modify, or distribute
-# this file you indicate that you have read the license and
-# understand and accept it fully.
-
-"""Module to generate Mkdocs config.
-
-This module contains routines to generate the configuration file
-`mkdocs.yml` required by Mkdocs to build static HTML documentation
-from markdown.
-
-More information can be found at:
-
-<https://www.mkdocs.org/user-guide/configuration/>
-"""
-
-from __future__ import print_function
-
-import datetime
-import logging
-
-import yaml
-
-import utils
-
-log = logging.getLogger( __name__ )
-
-# Config file name
-config_filename = "mkdocs.yml"
-
-# Docs directory and site directory
-docs_dir = "markdown"
-site_dir = "site"
-
-# Basic site configuration default values
-site_name = "FreeType API Reference"
-site_description = "API Reference documentation for FreeType"
-site_author = "FreeType Contributors"
-use_dir_url = False
-
-# Theme configuration default values
-theme_conf = {}
-theme_conf['name'] = "material"
-theme_conf['logo'] = "images/favico.ico"
-theme_conf['language'] = "en"
-theme_conf['favicon'] = "images/favico.ico"
-theme_conf['palette'] = {}
-theme_conf['font'] = {}
-
-# Theme palette
-theme_conf['palette']['primary'] = "green"
-theme_conf['palette']['accent'] = "green"
-
-# Theme fonts
-theme_conf['font']['text'] = "Noto Serif"
-theme_conf['font']['code'] = "Roboto Mono"
-
-# Markdown extensions
-md_extensions = '''\
-markdown_extensions:
- - toc:
- permalink: true
- - pymdownx.superfences:
- disable_indented_code_blocks: true
- - codehilite:
- guess_lang: false
- - pymdownx.betterem:
- smart_enable: all
- - pymdownx.magiclink
- - pymdownx.smartsymbols
-'''
-
-# Extra scripts
-extra_scripts = '''\
-extra_css:
- - 'stylesheets/extra.css'
-
-extra_javascript:
- - 'javascripts/extra.js'
-'''
-
-# Other config
-year = datetime.datetime.utcnow().year
-var_dict = { 'year': year }
-other_config = '''\
-copyright: Copyright {year} \
-<a href = "https://www.freetype.org/license.html">\
-The FreeType Project</a>.
-'''
-other_config = other_config.format( **var_dict )
-
-def add_config( yml_string, config_name ):
- config = None
- try:
- config = yaml.safe_load( yml_string )
- except yaml.scanner.ScannerError:
- log.warn( "Malformed '%s' config, ignoring.", config_name )
- return config
-
-def build_extras():
- # Parse all configurations and save as Python objects
- global md_extensions, yml_extra, yml_other
- md_extensions = add_config( md_extensions, "markdown_extensions" )
- yml_extra = add_config( extra_scripts, "extra scripts" )
- yml_other = add_config( other_config, "other" )
-
-
-class Chapter( object ):
- def __init__( self, title ):
- self.title = title
- self.pages = []
-
- def add_page( self, section_title, filename ):
- """Add a page to the chapter."""
- cur_page = {}
- cur_page[section_title] = filename
- self.pages.append( cur_page )
-
- def get_pages( self ):
- """Get dict of pages in the chapter."""
- conf = {}
- conf[self.title] = self.pages
- return conf
-
-
-class SiteConfig( object ):
- """Site configuration generator class.
-
- This class is used to generate site configuration based on supplied
- and default values.
- """
- def __init__( self ):
- self.site_config = {}
- self.pages = []
- self.chapter = None
- self.sections = []
- self.md_extensions = []
-
- # Set configurations
- self.site_name = site_name
- self.site_desc = site_description
- self.site_author = site_author
- self.docs_dir = docs_dir
- self.site_dir = site_dir
- self.theme_conf = theme_conf
- self.use_dir_url = use_dir_url
-
- def set_site_info( self, name, description = None, author = None ):
- """Set the basic site information."""
- if name:
- self.site_name = name
- else:
- # Site name is required, throw warning and revert to default
- log.warn( "Site name not specified, reverting to default." )
-
- if description:
- self.site_desc = description
- if author:
- self.site_author = author
-
- def add_single_page( self, section_title, filename ):
- """Add a single page to the list of pages."""
- cur_page = {}
- cur_page[section_title] = filename
- self.pages.append( cur_page )
-
- def add_chapter_page( self, section_title, filename ):
- """Add a page to a chapter.
-
- Chapter must be set first using `start_chapter()` If not set,
- `add_single_page()` will be called internally.
- """
- if self.chapter:
- self.chapter.add_page( section_title, filename )
- else:
- log.warn( "Section '%s' added without starting chapter.",
- section_title )
- self.add_single_page( section_title, filename )
-
- def start_chapter( self, chap ):
- """Start a chapter."""
- if self.chapter:
- self.end_chapter()
-
- self.chapter = Chapter( chap )
-
- def end_chapter( self ):
- """Explicitly end a chapter."""
- if self.chapter:
- chap_pages = self.chapter.get_pages()
- self.pages.append( chap_pages )
- self.chapter = None
-
- def build_site_config( self ):
- """Add basic Project information to config."""
- self.site_config['site_name'] = self.site_name
- if site_description:
- self.site_config['site_description'] = self.site_desc
- if site_author:
- self.site_config['site_author'] = self.site_author
- if docs_dir:
- self.site_config['docs_dir'] = self.docs_dir
- if site_dir:
- self.site_config['site_dir'] = self.site_dir
- if use_dir_url is not None:
- self.site_config['use_directory_urls'] = self.use_dir_url
-
- def build_theme_config( self ):
- # internal: build theme config
- if theme_conf != {}:
- self.site_config['theme'] = self.theme_conf
-
- def build_pages( self ):
- # internal: build pages config
- if self.pages != []:
- self.site_config['pages'] = self.pages
-
- def populate_config( self, data ):
- # internal: Add a given not None object to site_config
- if data:
- self.site_config.update( data )
-
- def write_config( self, name ):
- """Write all values in site_config to output stream."""
- if self.site_config != {}:
- print( "# " + name )
- print( yaml.dump( self.site_config, default_flow_style=False ) )
- self.site_config.clear()
-
- def write_config_order( self, name, order ):
- """Write all values in site_config to output stream in order."""
- if self.site_config != {}:
- print( "# " + name )
- for key in order:
- if key in self.site_config:
- temp_config = {}
- temp_config[key] = self.site_config[key]
- print( yaml.dump( temp_config, default_flow_style=False ).rstrip() )
- self.site_config.pop( key, None )
-
- if self.site_config != {}:
- # Print remaining values
- print( yaml.dump( self.site_config, default_flow_style=False ).rstrip() )
-
- # print an empty line
- print()
- self.site_config.clear()
-
- def build_config( self ):
- """Build the YAML configuration."""
- # End chapter if started
- self.end_chapter()
-
- # Open yml file
- output = utils.open_output( config_filename, config = True )
-
- # Build basic site info
- self.build_site_config()
- order = ['site_name', 'site_author', 'docs_dir', 'site_dir']
- self.write_config_order( "Project information", order )
-
- # Build theme configuration
- self.build_theme_config()
- self.write_config( "Configuration" )
-
- # Build pages
- self.build_pages()
- self.write_config( "Pages" )
-
- # Build extra scripts
- build_extras()
-
- # Add extra CSS and Javascript
- self.populate_config( yml_extra )
- self.write_config( "Customization" )
-
- # Add Markdown extensions
- self.populate_config( md_extensions )
- self.write_config( "Extensions" )
-
- # Add other options
- self.populate_config( yml_other )
- self.write_config( "Other Options" )
-
- # Close the file
- utils.close_output( output )
-
-# eof