raptor
Version:
RaptorJS provides an AMD module loader that works in Node, Rhino and the web browser. It also includes various sub-modules to support building optimized web applications.
59 lines (51 loc) • 2.14 kB
JavaScript
require('./_helper.js');
var raptor = require('raptor');
var define = raptor.createDefine(module);
var logger = require('raptor/logging').logger("raptor-css-parser-spec"),
findUrls = function(path) {
try
{
var File = require('raptor/files/File');
var cssFile = new File(__dirname, path);
var code = cssFile.readAsString();
var cssParser = require('raptor/css-parser');
var urls = {};
cssParser.findUrls(code, function(url, index, endIndex) {
urls[url] = [index, endIndex];
});
return urls;
}
catch(e) {
logger.error(e);
throw raptor.createError(new Error('Unable to find URLs in CSS at path "' + path + '". Exception: ' + e.toString()), e);
}
},
replaceUrls = function(path, callback, thisObj) {
try
{
var File = require('raptor/files/File');
var cssFile = new File(__dirname, path);
var code = cssFile.readAsString();
var cssParser = require('raptor/css-parser');
return cssParser.replaceUrls(code, callback, thisObj);
}
catch(e) {
logger.error(e);
throw raptor.createError(new Error('Unable to replace URLs in CSS at path "' + path + '". Exception: ' + e.toString()), e);
}
};
describe('css-parser module', function() {
it('should handle replacements for a simple CSS file', function() {
var code = replaceUrls('resources/css-parser/simple.css', function(url) {
return url.toUpperCase();
});
expect(code).toEqual(".test { background-image: url(IMAGE1.PNG); }\n.test2 { background-image: url(IMAGE2.PNG); }");
});
it('should handle generic CSS file', function() {
var urls = findUrls('resources/css-parser/style.css');
expect(Object.keys(urls).length).toEqual(3);
expect(urls['d.png']).toNotEqual(null);
expect(urls['throbber.gif']).toNotEqual(null);
expect(urls['d.gif']).toNotEqual(null);
});
});