diff --git a/README.rst b/README.rst index f23ed58..fa087c4 100644 --- a/README.rst +++ b/README.rst @@ -97,6 +97,9 @@ Settings ``LESS_EXECUTABLE`` Path to LESS compiler executable. Default: ``"lessc"``. +``LESS_OPTIONS`` + Options sent to ``lessc``. Default: ``[]``. + ``LESS_ROOT`` Controls the absolute file path that compiled files will be written to. Default: ``STATIC_ROOT``. diff --git a/less/settings.py b/less/settings.py index dbc4956..93f7294 100644 --- a/less/settings.py +++ b/less/settings.py @@ -7,6 +7,7 @@ LESS_MTIME_DELAY = getattr(settings, "LESS_MTIME_DELAY", 10) # 10 seconds LESS_ROOT = getattr(settings, "LESS_ROOT", getattr(settings, "STATIC_ROOT", getattr(settings, "MEDIA_ROOT"))) LESS_OUTPUT_DIR = getattr(settings, "LESS_OUTPUT_DIR", "LESS_CACHE") +LESS_OPTIONS = getattr(settings, "LESS_OPTIONS", []) LESS_DEVMODE = getattr(settings, "LESS_DEVMODE", False) LESS_DEVMODE_WATCH_DIRS = getattr(settings, "LESS_DEVMODE_WATCH_DIRS", [settings.STATIC_ROOT]) LESS_DEVMODE_EXCLUDE = getattr(settings, "LESS_DEVMODE_EXCLUDE", ()) diff --git a/less/utils.py b/less/utils.py index 4b56323..fc3d058 100644 --- a/less/utils.py +++ b/less/utils.py @@ -1,8 +1,9 @@ from less import LessException -from less.settings import LESS_EXECUTABLE, LESS_ROOT, LESS_OUTPUT_DIR +from less.settings import LESS_EXECUTABLE, LESS_ROOT, LESS_OUTPUT_DIR, \ + LESS_OPTIONS from django.conf import settings import logging -import posixpath +import urlparse import re import os import subprocess @@ -21,14 +22,15 @@ class URLConverter(object): def __init__(self, content, source_path): self.content = content self.source_dir = os.path.dirname(source_path) + if not self.source_dir.endswith('/'): + self.source_dir = self.source_dir + '/' def convert_url(self, matchobj): url = matchobj.group(1) url = url.strip(' \'"') if url.startswith(('http://', 'https://', '/', 'data:')): return "url('%s')" % url - full_url = posixpath.normpath("/".join([self.source_dir, url])) - return "url('%s')" % full_url + return "url('%s')" % urlparse.urljoin(self.source_dir, url) def convert(self): return self.URL_PATTERN.sub(self.convert_url, self.content) @@ -40,7 +42,7 @@ def compile_less(input, output, less_path): if not os.path.exists(less_root): os.makedirs(less_root) - args = [LESS_EXECUTABLE, input] + args = [LESS_EXECUTABLE] + LESS_OPTIONS + [input] popen_kwargs = dict( stdout=subprocess.PIPE, stderr=subprocess.PIPE,