| # Utils (c) 2002, 2004, 2007, 2008 David Turner <david@freetype.org> |
| # |
| |
| import string, sys, os, glob |
| |
| # current output directory |
| # |
| output_dir = None |
| |
| |
| # This function is used to sort the index. It is a simple lexicographical |
| # sort, except that it places capital letters before lowercase ones. |
| # |
| def index_sort( s1, s2 ): |
| if not s1: |
| return -1 |
| |
| if not s2: |
| return 1 |
| |
| l1 = len( s1 ) |
| l2 = len( s2 ) |
| m1 = string.lower( s1 ) |
| m2 = string.lower( s2 ) |
| |
| for i in range( l1 ): |
| if i >= l2 or m1[i] > m2[i]: |
| return 1 |
| |
| if m1[i] < m2[i]: |
| return -1 |
| |
| if s1[i] < s2[i]: |
| return -1 |
| |
| if s1[i] > s2[i]: |
| return 1 |
| |
| if l2 > l1: |
| return -1 |
| |
| return 0 |
| |
| |
| # 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 |
| |
| |
| # Open the standard output to a given project documentation file. Use |
| # "output_dir" to determine the filename location if necessary and save the |
| # old stdout 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 "close_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" ) |
| sys.exit( 2 ) |
| else: |
| output_dir = None |
| |
| |
| def file_exists( pathname ): |
| """checks 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 ): |
| """builds 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 |