##############################################################################
# Name:       misc/scripts/update_doc_utils.py
# Purpose:    base utilities for others update_doc_*.py scripts
# Created:    2007-08-1
# Copyright:  (c) 2007 Francesco Montorsi
# Licence:    wxWindows licence
##############################################################################

import sys, os, glob, distutils.file_util

DOCS_PATH="../../docs/latex/wx"

# Calls the given callback with the name of a documented class, its .tex related file,
# the content of that .tex file and the number of the line of the relative \class tag,
# for all documented class in DOCS_PATH. If the callback returns false the processing is stopped.
# Returns the number of .tex files processed.
def scanTexFiles(callback):
    count = 0
    for f in glob.glob(DOCS_PATH + '/*.tex'):
        file = open(f, "r")
        if not file:
            print "could not open %s" % f
            continue
        print "opened file %s" % f
        count = count + 1

        # search \class tags
        content = file.readlines()
        classdecl = 0
        for i in range(len(content)):
            line = content[i]
            if "\class{" in line:
                classdecl = classdecl + 1

                # polish the class name
                classname = line
                classname = classname[classname.find("\class{"):]
                classname = classname[classname.find("{")+1:classname.find("}")]
                print " the class declared is named '%s'" % classname

                # process this \class
                if not callback(classname, f, content, i):
                    return count

        print " file %s contains %d class declarations" % (f, classdecl)

    return count

