add: options.variables

- allows users to control output of base64 encoded images as SASS/SCSS
variables.
This commit is contained in:
David Mosher
2013-10-29 22:54:56 -06:00
parent a6bfaef6c2
commit df228f95e0
6 changed files with 66 additions and 11 deletions
+17
View File
@@ -49,6 +49,23 @@ module.exports = function (grunt) {
"tmp/base64.sass", "tmp/base64.sass",
"tmp/base64.scss" "tmp/base64.scss"
] ]
},
variables_option: {
options: {
classPrefix: 'data-',
variables: true
},
src: [
"test/fixtures/test-png.png",
"test/fixtures/test-gif.gif",
"test/fixtures/test-jpg.jpg",
"test/fixtures/test-bmp.bmp"
],
dest: [
"tmp/base64.variables.scss",
"tmp/base64.variables.sass"
]
} }
} }
}); });
+6
View File
@@ -54,6 +54,12 @@ Default value: `true`
Output as [placeholders](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#placeholder_selectors_) or simple CSS classes - for SASS/SCSS only. Output as [placeholders](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#placeholder_selectors_) or simple CSS classes - for SASS/SCSS only.
#### options.variables
Type: `Boolean`
Default value: `false`
Output as [variables](http://sass-lang.com/documentation/file.SASS_REFERENCE.html#variables_) for SASS/SCSS only.
#### src #### src
Type: `String` or `Array` Type: `String` or `Array`
+10 -4
View File
@@ -16,12 +16,13 @@ module.exports = function (grunt)
var filesize = require('filesize'); var filesize = require('filesize');
var datauri = require('datauri'); var datauri = require('datauri');
// templates to generate CSS classes // templates to generate CSS classes, placeholder selectors, or variables
var cssTemplates = { var cssTemplates = {
scss: '%{{class}} {\n\tbackground-image: url("{{data}}");\n}', scss: '%{{class}} {\n\tbackground-image: url("{{data}}");\n}',
sass: '%{{class}}\n\tbackground-image: url("{{data}}")', sass: '%{{class}}\n\tbackground-image: url("{{data}}")',
sass_no: '.{{class}}\n\tbackground-image: url("{{data}}")', sass_no: '.{{class}}\n\tbackground-image: url("{{data}}")',
default: '.{{class}} {\n\tbackground-image: url("{{data}}");\n}' default: '.{{class}} {\n\tbackground-image: url("{{data}}");\n}',
variables: '${{class}}: "{{data}}";'
}; };
// filesize is only critical for IE8 // filesize is only critical for IE8
@@ -36,7 +37,8 @@ module.exports = function (grunt)
classPrefix: '', classPrefix: '',
classSuffix: '', classSuffix: '',
checkFilesize: true, checkFilesize: true,
usePlaceholder: true usePlaceholder: true,
variables: false
}); });
@@ -87,7 +89,11 @@ module.exports = function (grunt)
className = options.classPrefix + path.basename( data.path ).split( '.' )[0] + options.classSuffix; className = options.classPrefix + path.basename( data.path ).split( '.' )[0] + options.classSuffix;
filetype = options.usePlaceholder ? filetype : filetype + '_no'; filetype = options.usePlaceholder ? filetype : filetype + '_no';
template = cssTemplates[ filetype ] || cssTemplates.default; if(options.variables) {
template = cssTemplates.variables;
} else {
template = cssTemplates[ filetype ] || cssTemplates.default;
}
return template.replace( '{{class}}', className ).replace( '{{data}}', data.data ); return template.replace( '{{class}}', className ).replace( '{{data}}', data.data );
} }
+19 -7
View File
@@ -4,23 +4,35 @@ var grunt = require('grunt');
var fs = require('fs'); var fs = require('fs');
exports.datauri = { exports.datauri = {
setUp: function( done ) setUp: function( done )
{ {
done(); done();
}, },
main_options: function( test ) main_options: function( test )
{ {
test.expect( 3 ); test.expect( 3 );
var file = grunt.file.read; var file = grunt.file.read;
test.equal( file( "tmp/base64.css" ), file( "test/expected/base64.css" ), "CSS should be equal." ); test.equal( file( "tmp/base64.css" ), file( "test/expected/base64.css" ), "CSS should be equal." );
test.equal( file( "tmp/base64.scss" ), file( "test/expected/base64.scss" ), "SCSS should be equal." ); test.equal( file( "tmp/base64.scss" ), file( "test/expected/base64.scss" ), "SCSS should be equal." );
test.equal( file( "tmp/base64.sass" ), file( "test/expected/base64.sass" ), "SASS should be equal." ); test.equal( file( "tmp/base64.sass" ), file( "test/expected/base64.sass" ), "SASS should be equal." );
test.done();
},
variables_option: function( test)
{
test.expect( 2 );
var file = grunt.file.read;
test.equal( file( "tmp/base64.variables.scss"), file( "test/expected/base64.variables.scss" ), "SCSS variables should be equal.");
test.equal( file( "tmp/base64.variables.sass"), file( "test/expected/base64.variables.sass" ), "SASS variables should be equal.");
test.done(); test.done();
} }
}; };
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long