Diffstat (limited to 'scripts/builder/frontendBuilder.py') (more/less context) (ignore whitespace changes)
-rw-r--r-- | scripts/builder/frontendBuilder.py | 73 |
1 files changed, 17 insertions, 56 deletions
diff --git a/scripts/builder/frontendBuilder.py b/scripts/builder/frontendBuilder.py index e52c31e..b72179f 100644 --- a/scripts/builder/frontendBuilder.py +++ b/scripts/builder/frontendBuilder.py @@ -22,32 +22,34 @@ class FrontendBuilder(object): self.submodule = moduleComponents[1] else: self.module = frontend self.submodule = frontend self.settings = settings self.projectDir = main.projectBaseDir() # self.repository = repository.repositoryWithPath(self.projectDir) self.repositoryVersion = repositoryVersion self.processedFiles = {} #--------------------------------------------------------------------------- def name (self): raise NotImplementedError() + def projectResourceTypes (self): + raise NotImplementedError() def copyStaticResources (self, targetFolder): raise NotImplementedError() #--------------------------------------------------------------------------- def log (self, message): module = self.module if (self.module != self.submodule): module = module + "." + self.submodule print "frontend [" + module + "]: " + message def absolutePathForSources (self): return os.path.join(self.projectDir, 'frontend', self.module) @@ -80,35 +82,37 @@ class FrontendBuilder(object): main.createFolder(os.path.dirname(dst)) shutil.copy2(src, dst) else: srcFolder = os.path.join(self.absolutePathForSources(), fileType) dstFolder = os.path.join(destinationFolder, self.module, fileType) if not(os.path.exists(dstFolder)): shutil.copytree(srcFolder, dstFolder) # try: # shutil.copytree(srcFolder, dstFolder) # except: # pass def copyResourcesToFolder (self, targetFolder): - self.copyResources(self.projectDir, targetFolder, 'css') - self.copyResources(self.projectDir, targetFolder, 'js') - self.copyResources(self.projectDir, targetFolder, 'images') +# self.copyResources(self.projectDir, targetFolder, 'css') +# self.copyResources(self.projectDir, targetFolder, 'js') +# self.copyResources(self.projectDir, targetFolder, 'images') + for resoureceType in self.projectResourceTypes(): + self.copyResources(self.projectDir, targetFolder, resoureceType) self.copyStaticResources(targetFolder) def loadFilesContent (self, basePath, files): result = "" for file in self.filterFiles(files): try: fileHandler = codecs.open(self.absolutePathForSourceFile(basePath, file), 'r', 'utf-8') except: print "FILE: " + file result += fileHandler.read() + '\n' fileHandler.close() return result @@ -230,81 +234,34 @@ class FrontendBuilder(object): # result = re.sub('\s+', ' ', result) # Collapse "redundant" spaces. WARNING: this could have some evil side effects on constant strings used inside to code!! # result = re.sub('\s?([,\+=\(\)\{\};])\s?', '\\1', result) for replacer in replacers: result = re.sub(replacer[0], replacer[1], result) # <!-- escaping required to handle the bookmarklet code within the javascript code --> result = re.sub('\://', '%3a%2f%2f', result) result = re.sub('/', '%2f', result) # result = re.sub('"', '%22', result) result = re.sub('"', '\\"', result) result = re.sub('\"', '%22', result) result = re.sub('\'', '%22', result) result = re.sub('\\\\', '%5c', result) result = result.strip() result = 'javascript:' + result - -# replacers = [ -# ('aForm', '_1' ), -# ('inputFields', '_2' ), -# ('passwordFieldsFound', '_3' ), -# ('aDocument', '_6' ), -# ('aLevel', '_7' ), -# # ('result', '_8' ), -# ('documentForms', '_9' ), -# ('iFrames', '_c' ), -# ('anInputElement', '_d' ), -# ('options', '_f' ), -# ('option', '_12'), -# ('aLoginForm', '_13'), -# # ('action', '_17'), -# ('radioValues', '_18'), -# ('radioValueName', '_19'), -# ('inputElement', '_1a'), -# ('elementValues', '_1b'), -# ('radioValue', '_1c'), -# ('values', '_1d'), -# ('objtype', '_21'), -# ('useKey', '_27'), -# ('bookmarkletDiv', '_28'), -# ('someParameters', '_29'), -# ('anException', '_2a'), -# ('newDiv', '_2b'), -# ('base_url', '_2c'), -# ('help_url', '_2d'), -# ('logo_image_url', '_2e'), -# ('background_image_url','_2f'), -# ('close_image_url', '_30'), -# # ('bookmarklet_textarea','_31'), -# ('innerHTML', '_32'), -# ] -# for replacer in replacers: -# result = re.sub('([^\.])' + replacer[0], '\\1' + replacer[1], result) - -# replacers = [ -# ('headNode', '_1' ), -# ('clipperzScriptNode', '_2' ), -# ] -# for replacer in replacers: -# result = re.sub('([^\.])' + replacer[0], '\\1' + replacer[1], result) - -# result = re.sub(';', ';\n', result) return result - def bookmarklet (self): cacheKey = 'bookmarklet' if not self.processedFiles.has_key(cacheKey): result = 'bookmarklet="' + self.packBookmarklet(self.loadFilesContent('js', ['Bookmarklet.js']), "regular") + '";bookmarklet_ie="' + self.packBookmarklet(self.loadFilesContent('js', ['Bookmarklet_IE.js']), "IE") + '";' self.processedFiles[cacheKey] = result else: result = self.processedFiles[cacheKey] return result def replaceTemplatePlaceholders (self, pageTitle, copyright, css, code, jsLoadMode, version, versionType): result = self.template() @@ -375,43 +332,47 @@ class FrontendBuilder(object): else: pageTitle = "Clipperz - " + self.module + " [" + versionType + " - " + assemblyMode +"]" if assemblyMode == 'INSTALL': copyright = self.assembleCopyrightHeader() css = self.cssTagForContent(self.compressCSS(self.loadFilesContent('css', self.settings['css']))) js = self.scriptTagForContent( self.bookmarklet() + '\n' + self.compressJS(self.loadFilesContent('js', self.settings['js']), "application") ) jsLoadMode = 'EMBEDDED' elif assemblyMode == 'DEBUG': copyright = self.assembleCopyrightHeader() css = self.cssTagsForFiles('./css', self.filterFiles(self.settings['css'])) - js = self.scriptTagForContent(self.bookmarklet()) + \ - '\n' + \ - self.scriptTagsForFiles('./js', self.filterFiles(self.settings['js'])) + js = self.scriptTagForContent( + self.bookmarklet()) + \ + '\n' + \ + self.scriptTagsForFiles('./js', self.filterFiles(self.settings['js']) + ) jsLoadMode = 'LINKED' elif assemblyMode == 'DEVELOPMENT': copyright = "" css = self.cssTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'css')), self.filterFiles(self.settings['css'])) - js = self.scriptTagForContent(self.bookmarklet()) + \ - '\n' + \ - self.scriptTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'js')), self.filterFiles(self.settings['js'])) + js = self.scriptTagForContent( + self.bookmarklet()) + \ + '\n' + \ + self.scriptTagsForFiles('file://' + str(os.path.join(self.absolutePathForSources(), 'js')), self.filterFiles(self.settings['js']) + ) jsLoadMode = 'LINKED' versionType = 'development' else: raise NotImplementedError() return self.assembleVersion( pageTitle = pageTitle, copyright = copyright, css = css, js = js, jsLoadMode = jsLoadMode, version = self.repositoryVersion, versionType = versionType ) |