def checkCache(self, fileId, variants, optimize, format=False): filePath = self._classes[fileId]["path"] classVariants = self._classesObj[fileId].classVariants() relevantVariants = Class.projectClassVariantsToCurrent(classVariants, variants) variantsId = util.toString(relevantVariants) optimizeId = self.generateOptimizeId(optimize) cacheId = "compiled-%s-%s-%s-%s" % (filePath, variantsId, optimizeId, format) compiled, _ = self._cache.read(cacheId, filePath) return cacheId, compiled
def checkCache(self, fileId, variants, optimize, format=False): filePath = self._classes[fileId]["path"] classVariants = self._classesObj[fileId].classVariants() relevantVariants = Class.projectClassVariantsToCurrent( classVariants, variants) variantsId = util.toString(relevantVariants) optimizeId = self.generateOptimizeId(optimize) cacheId = "compiled-%s-%s-%s-%s" % (filePath, variantsId, optimizeId, format) compiled, _ = self._cache.read(cacheId, filePath) return cacheId, compiled
def getTranslation(self, fileId, variants): fileEntry = self._classes[fileId] filePath = fileEntry["path"] classVariants = self._classesObj[fileId].classVariants() relevantVariants = Class.projectClassVariantsToCurrent(classVariants, variants) variantsId = util.toString(relevantVariants) cacheId = "translation-%s-%s" % (filePath, variantsId) translation = self._cache.readmulti(cacheId, filePath) if translation != None: return translation self._console.debug("Looking for translation strings: %s..." % fileId) self._console.indent() #tree = self._treeLoader.getTree(fileId, variants) tree = self._classesObj[fileId].tree(variants) try: translation = self._findTranslationBlocks(tree, []) except NameError, detail: raise RuntimeError("Could not extract translation from %s!\n%s" % (fileId, detail))
def getDeps(self, fileId, variants): ## # Wrapper around the tree recurser, _analyzeClassDepsNode def analyzeClassDeps(fileId, variants): loadtimeDeps = [] runtimeDeps = [] undefDeps = [] tree = self._classesObj[fileId].tree(variants) self._analyzeClassDepsNode(fileId, tree, loadtimeDeps, runtimeDeps, undefDeps, False, variants) return loadtimeDeps, runtimeDeps, undefDeps ## # Handle meta hints and call analyzeClassDeps def buildShallowDeps(): # Notes: # load time = before class = require # runtime = after class = use load = [] run = [] ignore = [DependencyItem(x,-1) for x in self._defaultIgnore] self._console.debug("Gathering dependencies: %s" % fileId) self._console.indent() # Read meta data meta = self.getMeta(fileId) metaLoad = meta.get("loadtimeDeps", []) metaRun = meta.get("runtimeDeps" , []) metaOptional = meta.get("optionalDeps", []) metaIgnore = meta.get("ignoreDeps" , []) # Process meta data load.extend(DependencyItem(x,-1) for x in metaLoad) run.extend(DependencyItem(x,-1) for x in metaRun) ignore.extend(DependencyItem(x,-1) for x in metaIgnore) # Read content data (autoLoad, autoRun, autoWarn) = analyzeClassDeps(fileId, variants) # Process content data if not "auto-require" in metaIgnore: for dep in autoLoad: item = dep.name if item in metaOptional: pass elif item in (x.name for x in load): self._console.warn("%s: #require(%s) is auto-detected" % (fileId, item)) else: load.append(dep) if not "auto-use" in metaIgnore: for dep in autoRun: item = dep.name if item in metaOptional: pass elif item in (x.name for x in load): pass elif item in (x.name for x in run): self._console.warn("%s: #use(%s) is auto-detected" % (fileId, item)) else: run.append(dep) self._console.outdent() # Build data structure deps = { "load" : load, "run" : run, "ignore" : ignore, 'undef' : autoWarn } return deps # -- Main --------------------------------------------------------- # # Handle caching and invoke buildShallowDeps # if fileId not in self._classesObj: raise NameError("Could not find class to fulfill dependency: %s" % fileId) clazz = self._classesObj[fileId] filePath = clazz.path classVariants = clazz.classVariants() #classVariants = variants.keys() # a do-nothing alternative relevantVariants = Class.projectClassVariantsToCurrent(classVariants, variants) cacheId = "deps-%s-%s" % (filePath, util.toString(relevantVariants)) # print "Read from cache: %s" % fileId deps = self._cache.readmulti(cacheId, filePath) if deps == None: deps = buildShallowDeps() self._cache.writemulti(cacheId, deps) #deps = self._traverseDependencies(deps) return deps