def prepare_source(self, codestr, sass=False): state = {"line_buffer": "", "prev_line": "", "prev_indent": 0, "nested_blocks": 0, "indent_marker": 0} if self.is_sass: parse_line = self.parse_sass_line else: parse_line = self.parse_scss_line _codestr = codestr codestr = "" for line in _codestr.splitlines(): codestr += parse_line(line, state) # parse the last line stored in prev_line buffer codestr += parse_line(None, state) # protects codestr: "..." strings codestr = _strings_re.sub( lambda m: _reverse_safe_strings_re.sub(lambda n: _reverse_safe_strings[n.group(0)], m.group(0)), codestr ) # removes multiple line comments codestr = _ml_comment_re.sub("", codestr) # removes inline comments, but not :// (protocol) codestr = _sl_comment_re.sub("", codestr) codestr = _safe_strings_re.sub(lambda m: _safe_strings[m.group(0)], codestr) # expand the space in rules codestr = _expand_rules_space_re.sub(" {", codestr) # collapse the space in properties blocks codestr = _collapse_properties_space_re.sub(r"\1{", codestr) return codestr
def prepare_source(self, codestr, sass=False): # Decorate lines with their line numbers and a delimiting NUL and # remove empty lines state = { 'line_buffer': '', 'prev_line': '', 'prev_line_no': 0, 'prev_indent': 0, 'nested_blocks': 0, 'indent_marker': 0, } if self.is_sass: parse_line = self.parse_sass_line else: parse_line = self.parse_scss_line _codestr = codestr codestr = '' for line_no, line in enumerate(_codestr.splitlines()): codestr += parse_line(line_no, line, state) # parse the last line stored in prev_line buffer codestr += parse_line(None, None, state) # protects codestr: "..." strings codestr = _strings_re.sub( lambda m: _reverse_safe_strings_re.sub( lambda n: _reverse_safe_strings[n.group(0)], m.group(0)), codestr) # removes multiple line comments codestr = _ml_comment_re.sub('', codestr) # removes inline comments, but not :// (protocol) codestr = _sl_comment_re.sub('', codestr) codestr = _safe_strings_re.sub( lambda m: _safe_strings[m.group(0)], codestr) # expand the space in rules codestr = _expand_rules_space_re.sub(' {', codestr) # collapse the space in properties blocks codestr = _collapse_properties_space_re.sub(r'\1{', codestr) return codestr
def prepare_source(self, codestr, sass=False): state = { 'line_buffer': '', 'prev_line': '', 'prev_indent': 0, 'nested_blocks': 0, 'indent_marker': 0, } if self.is_sass: parse_line = self.parse_sass_line else: parse_line = self.parse_scss_line _codestr = codestr codestr = '' for line in _codestr.splitlines(): codestr += parse_line(line, state) # parse the last line stored in prev_line buffer codestr += parse_line(None, state) # pop off the extra \n parse_line puts at the beginning codestr = codestr[1:] # protects codestr: "..." strings codestr = _strings_re.sub( lambda m: _reverse_safe_strings_re.sub( lambda n: _reverse_safe_strings[n.group(0)], m.group(0)), codestr) # removes multiple line comments codestr = _ml_comment_re.sub('', codestr) # removes inline comments, but not :// (protocol) codestr = _sl_comment_re.sub('', codestr) codestr = _safe_strings_re.sub( lambda m: _safe_strings[m.group(0)], codestr) # collapse the space in properties blocks codestr = _collapse_properties_space_re.sub(r'\1{', codestr) return codestr
def prepare_source(self, codestr, sass=False): state = { 'line_buffer': '', 'prev_line': '', 'prev_indent': 0, 'nested_blocks': 0, 'indent_marker': 0, } if self.is_sass: parse_line = self.parse_sass_line else: parse_line = self.parse_scss_line _codestr = codestr codestr = '' for line in _codestr.splitlines(): codestr += parse_line(line, state) # parse the last line stored in prev_line buffer codestr += parse_line(None, state) # pop off the extra \n parse_line puts at the beginning codestr = codestr[1:] # protects codestr: "..." strings codestr = _strings_re.sub( lambda m: _reverse_safe_strings_re.sub( lambda n: _reverse_safe_strings[n.group(0)], m.group(0)), codestr) # removes multiple line comments codestr = _ml_comment_re.sub('', codestr) # removes inline comments, but not :// (protocol) codestr = _sl_comment_re.sub('', codestr) codestr = _safe_strings_re.sub(lambda m: _safe_strings[m.group(0)], codestr) # collapse the space in properties blocks codestr = _collapse_properties_space_re.sub(r'\1{', codestr) return codestr