PageRenderTime 56ms CodeModel.GetById 43ms app.highlight 10ms RepoModel.GetById 1ms app.codeStats 0ms

/src/freetype/src/tools/docmaker/utils.py

https://bitbucket.org/cabalistic/ogredeps/
Python | 132 lines | 102 code | 17 blank | 13 comment | 20 complexity | 0b67de3288f5bce308be586f9ff3e1e5 MD5 | raw file
  1#  Utils (c) 2002, 2004, 2007, 2008  David Turner <david@freetype.org>
  2#
  3
  4import string, sys, os, glob
  5
  6# current output directory
  7#
  8output_dir = None
  9
 10
 11# This function is used to sort the index.  It is a simple lexicographical
 12# sort, except that it places capital letters before lowercase ones.
 13#
 14def  index_sort( s1, s2 ):
 15    if not s1:
 16        return -1
 17
 18    if not s2:
 19        return 1
 20
 21    l1 = len( s1 )
 22    l2 = len( s2 )
 23    m1 = string.lower( s1 )
 24    m2 = string.lower( s2 )
 25
 26    for i in range( l1 ):
 27        if i >= l2 or m1[i] > m2[i]:
 28            return 1
 29
 30        if m1[i] < m2[i]:
 31            return -1
 32
 33        if s1[i] < s2[i]:
 34            return -1
 35
 36        if s1[i] > s2[i]:
 37            return 1
 38
 39    if l2 > l1:
 40        return -1
 41
 42    return 0
 43
 44
 45# Sort input_list, placing the elements of order_list in front.
 46#
 47def  sort_order_list( input_list, order_list ):
 48    new_list = order_list[:]
 49    for id in input_list:
 50        if not id in order_list:
 51            new_list.append( id )
 52    return new_list
 53
 54
 55# Open the standard output to a given project documentation file.  Use
 56# "output_dir" to determine the filename location if necessary and save the
 57# old stdout in a tuple that is returned by this function.
 58#
 59def  open_output( filename ):
 60    global output_dir
 61
 62    if output_dir and output_dir != "":
 63        filename = output_dir + os.sep + filename
 64
 65    old_stdout = sys.stdout
 66    new_file   = open( filename, "w" )
 67    sys.stdout = new_file
 68
 69    return ( new_file, old_stdout )
 70
 71
 72# Close the output that was returned by "close_output".
 73#
 74def  close_output( output ):
 75    output[0].close()
 76    sys.stdout = output[1]
 77
 78
 79# Check output directory.
 80#
 81def  check_output():
 82    global output_dir
 83    if output_dir:
 84        if output_dir != "":
 85            if not os.path.isdir( output_dir ):
 86                sys.stderr.write( "argument" + " '" + output_dir + "' " + \
 87                                  "is not a valid directory" )
 88                sys.exit( 2 )
 89        else:
 90            output_dir = None
 91
 92
 93def  file_exists( pathname ):
 94    """checks that a given file exists"""
 95    result = 1
 96    try:
 97        file = open( pathname, "r" )
 98        file.close()
 99    except:
100        result = None
101        sys.stderr.write( pathname + " couldn't be accessed\n" )
102
103    return result
104
105
106def  make_file_list( args = None ):
107    """builds a list of input files from command-line arguments"""
108    file_list = []
109    # sys.stderr.write( repr( sys.argv[1 :] ) + '\n' )
110
111    if not args:
112        args = sys.argv[1 :]
113
114    for pathname in args:
115        if string.find( pathname, '*' ) >= 0:
116            newpath = glob.glob( pathname )
117            newpath.sort()  # sort files -- this is important because
118                            # of the order of files
119        else:
120            newpath = [pathname]
121
122        file_list.extend( newpath )
123
124    if len( file_list ) == 0:
125        file_list = None
126    else:
127        # now filter the file list to remove non-existing ones
128        file_list = filter( file_exists, file_list )
129
130    return file_list
131
132# eof