From 45215a231d8773f71bafd061419f2ff1cbe13f10 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Mon, 30 Jun 2014 18:41:29 +0200 Subject: [PATCH] Fix indentation normalization --- openerp/addons/base/ir/ir_qweb.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/ir/ir_qweb.py b/openerp/addons/base/ir/ir_qweb.py index ddcdb00116d..e73305bf563 100644 --- a/openerp/addons/base/ir/ir_qweb.py +++ b/openerp/addons/base/ir/ir_qweb.py @@ -1363,6 +1363,9 @@ class StylesheetAsset(WebAsset): class SassAsset(StylesheetAsset): html_url = '%s.css' + rx_indent = re.compile(r'^( +|\t+)', re.M) + indent = None + reindent = ' ' def minify(self): return self.with_header() @@ -1387,8 +1390,22 @@ class SassAsset(StylesheetAsset): return super(SassAsset, self).to_html() def get_source(self): - # TODO: ensure same indentation level for all bundles - return "/*! %s */\n%s" % (self.id, textwrap.dedent(self.content)) + content = textwrap.dedent(self.content) + + def fix_indent(m): + ind = m.group() + if self.indent is None: + self.indent = ind + if self.indent == self.reindent: + # Don't reindent the file if identation is the final one (reindent) + raise StopIteration() + return ind.replace(self.indent, self.reindent) + + try: + content = self.rx_indent.sub(fix_indent, content) + except StopIteration: + pass + return "/*! %s */\n%s" % (self.id, content) def rjsmin(script): """ Minify js with a clever regex.