| Index: third_party/freetype2/src/src/tools/docmaker/utils.py
|
| diff --git a/third_party/freetype2/src/src/tools/docmaker/utils.py b/third_party/freetype2/src/src/tools/docmaker/utils.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..254083e92e9f58fd0186fc8062d32217fbfd5e30
|
| --- /dev/null
|
| +++ b/third_party/freetype2/src/src/tools/docmaker/utils.py
|
| @@ -0,0 +1,127 @@
|
| +#
|
| +# utils.py
|
| +#
|
| +# Auxiliary functions for the `docmaker' tool (library file).
|
| +#
|
| +# Copyright 2002-2015 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.
|
| +
|
| +
|
| +import string, sys, os, glob, itertools
|
| +
|
| +
|
| +# current output directory
|
| +#
|
| +output_dir = None
|
| +
|
| +
|
| +# A function that generates 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'.
|
| +#
|
| +def index_key( s ):
|
| + return string.join( itertools.chain( *zip( s.lower(), s ) ) )
|
| +
|
| +
|
| +# Sort `input_list', placing the elements of `order_list' in front.
|
| +#
|
| +def sort_order_list( input_list, order_list ):
|
| + new_list = order_list[:]
|
| + for id in input_list:
|
| + if not id in order_list:
|
| + new_list.append( id )
|
| + return new_list
|
| +
|
| +
|
| +# 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.
|
| +#
|
| +def open_output( filename ):
|
| + global output_dir
|
| +
|
| + if output_dir and output_dir != "":
|
| + filename = output_dir + os.sep + filename
|
| +
|
| + old_stdout = sys.stdout
|
| + new_file = open( filename, "w" )
|
| + sys.stdout = new_file
|
| +
|
| + return ( new_file, old_stdout )
|
| +
|
| +
|
| +# Close the output that was returned by `open_output'.
|
| +#
|
| +def close_output( output ):
|
| + output[0].close()
|
| + sys.stdout = output[1]
|
| +
|
| +
|
| +# Check output directory.
|
| +#
|
| +def check_output():
|
| + global output_dir
|
| + if output_dir:
|
| + if output_dir != "":
|
| + if not os.path.isdir( output_dir ):
|
| + sys.stderr.write( "argument"
|
| + + " '" + output_dir + "' "
|
| + + "is not a valid directory\n" )
|
| + sys.exit( 2 )
|
| + else:
|
| + output_dir = None
|
| +
|
| +
|
| +def file_exists( pathname ):
|
| + """Check that a given file exists."""
|
| + result = 1
|
| + try:
|
| + file = open( pathname, "r" )
|
| + file.close()
|
| + except:
|
| + result = None
|
| + sys.stderr.write( pathname + " couldn't be accessed\n" )
|
| +
|
| + return result
|
| +
|
| +
|
| +def make_file_list( args = None ):
|
| + """Build a list of input files from command-line arguments."""
|
| + file_list = []
|
| + # sys.stderr.write( repr( sys.argv[1 :] ) + '\n' )
|
| +
|
| + if not args:
|
| + args = sys.argv[1:]
|
| +
|
| + for pathname in args:
|
| + if string.find( pathname, '*' ) >= 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
|
|
|