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)