def build_and_process(self, source_html, target_html, debug=False, skip_build=False): self.debug = debug if not skip_build: self.build() source_js_files = [os.path.join(closure_path, "goog", "base.js")] source_js_files += [self.application_js_path, self.deps_js_path] HtmlPost.replaceJsFiles(source_html, target_html, self.compiled_js_path, source_js_files)
def build_and_process(self, source_html, target_html, debug = False, skip_build = False): if(not skip_build): self.deps_and_compile(debug) source_js_files = [os.path.join(self.googPath(), 'base.js')] source_js_files += [self.deps_js_path] if(self.application_js_path): source_js_files += [self.application_js_path] HtmlPost.replaceJsFiles(source_html, target_html, self.compiled_js_path, source_js_files)
def compress(self): dom = minidom.parse(self.source) if(self.target_css): # find css css_elements = HtmlPost.getCSSElementsFromDom(dom) css_files = map(lambda e: e.getAttribute('href'), css_elements) for element in css_elements: # remove originals element.parentNode.removeChild(element) # concat, compress CssCompressor(css_files, self.target_css).compress() #add new element back into dom css_element = dom.createElement('link') css_element.setAttribute('rel', 'stylesheet') css_element.setAttribute('type', 'text/css') css_element.setAttribute('href', self.target_css) # find js script_elements = HtmlPost.getScriptElementsFromDom(dom) # remove all script references that are compiled for element in script_elements: HtmlPost.process_script_element(element) # concat, compress script_elements_w_src = filter(lambda e: e.hasAttribute('src'), script_elements) source_files = map(lambda e: e.getAttribute('src'), script_elements_w_src) concat(source_files, self.target_js) compiledElement = dom.createElement('script') compiledElement.setAttribute('src', self.target_js) head = dom.getElementsByTagName('head')[0] if(self.target_css): # append compressed css appendAfterLast(css_element, head, 'link') # append compiled js head.appendChild(compiledElement) # write changed file to temp file self._tmp = get_tmp_file_name(self.source) writeXmlSansInstructions(dom, self._tmp) with open(self._tmp,'r') as file: contents = map(lambda x: x.strip(), file.readlines()) with open(self._tmp,'w') as file: file.writelines(contents) # compress html run_process_file_command(self.get_compress_args) HtmlPost.ensureHtmlElementsFromFile(self.target) remove_if_exists(self._tmp)