@@ -154,25 +154,47 @@ def build(self, package_dir):
154154 return frozenset (os .path .join (self .css_path , filename )
155155 for filename in css_files )
156156
157- def build_one (self , package_dir , filename ):
157+ def build_one (self , package_dir , filename , source_map = False ):
158158 """Builds one SASS/SCSS file.
159159
160160 :param package_dir: the path of package directory
161161 :type package_dir: :class:`str`, :class:`basestring`
162162 :param filename: the filename of SASS/SCSS source to compile
163163 :type filename: :class:`str`, :class:`basestring`
164+ :param source_map: whether to use source maps. if :const:`True`
165+ it also write a source map to a ``filename``
166+ followed by :file:`.map` suffix.
167+ default is :const:`False`
168+ :type source_map: :class:`bool`
164169 :returns: the filename of compiled CSS
165170 :rtype: :class:`str`, :class:`basestring`
166171
172+ .. versionadded:: 0.4.0
173+ Added optional ``source_map`` parameter.
174+
167175 """
168176 sass_filename , css_filename = self .resolve_filename (
169177 package_dir , filename )
170178 root_path = os .path .join (package_dir , self .sass_path )
171- css = compile (filename = sass_filename , include_paths = [root_path ])
172179 css_path = os .path .join (package_dir , self .css_path , css_filename )
180+ if source_map :
181+ source_map_path = css_filename + '.map'
182+ css , source_map = compile (
183+ filename = sass_filename ,
184+ include_paths = [root_path ],
185+ source_comments = 'map' ,
186+ source_map_filename = source_map_path # FIXME
187+ )
188+ else :
189+ css = compile (filename = sass_filename , include_paths = [root_path ])
190+ source_map_path = None
191+ source_map = None
173192 css_folder = os .path .dirname (css_path )
174193 if not os .path .exists (css_folder ):
175194 os .makedirs (css_folder )
176195 with open (css_path , 'w' ) as f :
177196 f .write (css )
197+ if source_map :
198+ with open (source_map_path , 'w' ) as f :
199+ f .write (source_map )
178200 return css_filename
0 commit comments