UNPKG

asset-rack

Version:

Static Web Framework for Nodejs

48 lines (36 loc) 1.43 kB
fs = require 'fs' pathutil = require 'path' sassy = require "node-sassy" {Asset} = require '../.' urlRegex = /url\s*\(\s*(['"])((?:(?!\1).)+)\1\s*\)/ urlRegexGlobal = /url\s*\(\s*(['"])((?:(?!\1).)+)\1\s*\)/g class exports.SassAsset extends Asset mimetype: 'text/css' create: (options) -> @filename = pathutil.resolve options.filename @toWatch = pathutil.dirname @filename @paths = options.paths @paths ?= [] @paths.push pathutil.dirname options.filename @compress = options.compress @compress ?= false sassOpts = {} if options.paths sassOpts.includeFrom = options.paths if @compress sassOpts["--style"] = "compressed" # Render the sass to css sassy.compile @filename, sassOpts, (err, css) => return @emit 'error', err if err? if @rack? results = css.match urlRegexGlobal if results for result in results match = urlRegex.exec result quote = match[1] url = match[2] specificUrl = @rack.url url if specificUrl? css = css.replace result, "url(#{quote}#{specificUrl}#{quote})" @emit 'created', contents: css