def Execute(rule, dirObj): """ Execute the rule in the given directory """ # Get the files to process, if empty, terminate toProcess = rules.getFilesToProcess(rule, dirObj) if toProcess == []: return # Every source file given is processed to know how many permutations will be # rawFiles contains the list of files produced that need to be processed rawFiles = doShuffle(toProcess, dirObj) # Prepare the style transformation styleFiles = dirObj.getProperty(rule, 'styles') styleTransform = xsltproc.createStyleTransform(styleFiles.split()) if styleTransform == None: print i18n.get('no_style_file') return # Create the dictionary of stylesheet parameters styleParams = xsltproc.createParameterDict(rule, dirObj) # Create a list with the param dictionaries to use in the different versions # to be created. paramDict = [] produceValues = set(dirObj.getProperty(rule, 'produce').split()) if 'regular' in produceValues: # Create the regular version, no additional parameters needed paramDict.append(({}, '')) if 'solution' in produceValues: paramDict.append(({'solutions.include.guide': "'yes'", 'adagio.testquestions.include.solutions': "'yes'"}, '_solution')) if 'pguide' in produceValues: paramDict.append(({'solutions.include.guide': "'yes'", 'adagio.testquestions.include.solutions': "'yes'", 'professorguide.include.guide': "'yes'", 'adagio.testquestions.include.id': "'yes'", 'adagio.testquestions.include.history': "'yes'"}, '_pguide')) # Apply all these transformations. xsltproc.doTransformations(styleFiles.split(), styleTransform, styleParams, rawFiles, rule, dirObj, paramDict) return
def Execute(rule, dirObj): """ Execute the rule in the given directory """ # Get the files to process, if empty, terminate toProcess = rules.getFilesToProcess(rule, dirObj) if toProcess == []: return # Prepare the style transformation styleFiles = dirObj.getProperty(rule, 'styles') styleTransform = xsltproc.createStyleTransform(styleFiles.split()) if styleTransform == None: print i18n.get('no_style_file') return # Create the dictionary of stylesheet parameters styleParams = xsltproc.createParameterDict(rule, dirObj) # Create a list with the param dictionaries to use in the different versions # to be created. paramDict = [] produceValues = set(dirObj.getProperty(rule, 'produce').split()) if 'regular' in produceValues: # Create the regular version, no additional parameters needed paramDict.append(({}, '')) if 'solution' in produceValues: paramDict.append(({'solutions.include.guide': "'yes'"}, '_solution')) if 'pguide' in produceValues: paramDict.append(({'solutions.include.guide': "'yes'", 'professorguide.include.guide': "'yes'"}, '_pguide')) # Apply all these transformations. xsltproc.doTransformations(styleFiles.split(), styleTransform, styleParams, toProcess, rule, dirObj, paramDict) # If 'submit' is also in the produce values, apply that transformation as # well (an optimization could be applied here such that if the same style is # given for the submit production, it could be folded in the previous # transformations...) if 'submit' in produceValues: # Prepare the style transformation styleFiles = dirObj.getProperty(rule, 'submit_styles') styleTransform = xsltproc.createStyleTransform(styleFiles.split()) if styleTransform == None: print i18n.get('no_style_file') return # Create the dictionary of stylesheet parameters styleParams = xsltproc.createParameterDict(rule, dirObj) # Apply the transformation and produce '_submit' file xsltproc.doTransformations(styleFiles.split(), styleTransform, styleParams, toProcess, rule, dirObj, [({}, '_submit')]) return