diff options
Diffstat (limited to 'src/tools/docwriter/utils.py')
-rw-r--r-- | src/tools/docwriter/utils.py | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/src/tools/docwriter/utils.py b/src/tools/docwriter/utils.py deleted file mode 100644 index 186cc4dd4..000000000 --- a/src/tools/docwriter/utils.py +++ /dev/null @@ -1,162 +0,0 @@ -# -# utils.py -# -# Auxiliary functions for the `docmaker' tool (library file). -# -# Copyright 2002-2018 by -# David Turner. -# -# 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. - -"""Utility functions for Docwriter. - -This module provides various utility functions for Docwriter. -""" - -import glob -import itertools -import logging -import os -import sys - -log = logging.getLogger( __name__ ) - -# current output directory -# -output_dir = None -markdown_dir = "markdown" - -def build_message(): - """Print build message to console.""" - path = os.path.join( output_dir, markdown_dir ) - path = os.path.normpath(path) - log.info("Building markdown documentation to directory: %s", path) - -def index_key( s ): - """Generate a sorting key. - - We want lexicographical order (primary key) except that capital - letters are sorted before lowercase ones(secondary key). - - The primary key is implemented by lowercasing the input. The - secondary key is simply the original data appended, character by - character. For example, the sort key for `FT_x` is `fFtT__xx`, - while the sort key for `ft_X` is `fftt__xX`. Since ASCII codes of - uppercase letters are numerically smaller than the codes of - lowercase letters, `fFtT__xx` gets sorted before `fftt__xX`. - """ - return " ".join( itertools.chain( *zip( s.lower(), s ) ) ) - - -def sort_order_list( input_list, order_list ): - """Sort `input_list`, placing the elements of `order_list' in front.""" - new_list = order_list[:] - for name in input_list: - if not name in order_list: - new_list.append( name ) - return new_list - - -def open_output( filename, config = False ): - """Divert standard output to a given project documentation file. - - Use `output_dir` to determine the filename location if necessary and - save the old stdout handle in a tuple that is returned by this function. - - If `config` is set to True, file is written to the parent directory. - This is because MkDocs (and other generators) require configuration - files to be in the parent directory. - """ - if output_dir and output_dir != "": - if not config: - filename = output_dir + os.sep + markdown_dir + os.sep + filename - else: - filename = output_dir + os.sep + filename - - old_stdout = sys.stdout - new_file = open( filename, "w" ) - sys.stdout = new_file - - return ( new_file, old_stdout ) - - -def close_output( output ): - """Close the output that was returned by `open_output`.""" - output[0].close() - sys.stdout = output[1] - - -def check_output(): - """Check if output directory is valid.""" - global output_dir - if output_dir: - if output_dir != "": - if not os.path.isdir( output_dir ): - log.error( "Argument" - " '%s' is not a valid directory.", - output_dir ) - sys.exit( 2 ) - else: - output_dir = None - - -def file_exists( pathname ): - """Check that a given file exists.""" - result = 1 - try: - file_handle = open( pathname, "r" ) - file_handle.close() - except Exception: - result = None - log.error( "%s couldn't be accessed.", pathname ) - - return result - -def clean_markdown_dir( ): - """Remove markdown and yml files from a directory.""" - directory = output_dir + os.sep + markdown_dir - if not os.path.exists(directory): - return - - for entry in os.listdir(directory): - - # Don't remove hidden files from the directory. - if entry.startswith('.'): - continue - path = os.path.join(directory, entry) - if os.path.isdir(path): - continue - - if entry.endswith('.md') or entry.endswith('.yml'): - os.unlink(path) - -def make_file_list( args = None ): - """Build a list of input files from a list or command-line arguments.""" - file_list = [] - - if not args: - args = sys.argv[1:] - - for pathname in args: - if pathname.find( '*' ) >= 0: - newpath = glob.glob( pathname ) - newpath.sort() # sort files -- this is important because - # of the order of files - else: - newpath = [pathname] - - file_list.extend( newpath ) - - if len( file_list ) == 0: - file_list = None - else: - # now filter the file list to remove non-existing ones - file_list = filter( file_exists, file_list ) - - return file_list - -# eof |