From 24e41081ef9b79b758254b8361bcfee3ba22f02b Mon Sep 17 00:00:00 2001 From: Jay Adkisson Date: Sun, 23 Dec 2012 00:59:13 -0800 Subject: [PATCH] add a data-uri function as described in a comment on #775 --- lib/less/functions.js | 14 ++++++++++++++ test/css/functions.css | 3 +++ test/data/image.jpg | 1 + test/less/functions.less | 4 ++++ 4 files changed, 22 insertions(+) create mode 100644 test/data/image.jpg diff --git a/lib/less/functions.js b/lib/less/functions.js index bb10cad2..f658f5cc 100644 --- a/lib/less/functions.js +++ b/lib/less/functions.js @@ -1,3 +1,5 @@ +var fs = require('fs'); + (function (tree) { tree.functions = { @@ -345,6 +347,18 @@ tree.functions = { }, shade: function(color, amount) { return this.mix(this.rgb(0, 0, 0), color, amount); + }, + "data-uri": function(mimetype, path) { + var data = fs.readFileSync(path.value); + mimetype = mimetype.value; + + if (/;base64$/.test(mimetype)) { + data = (new Buffer(data)).toString('base64'); + } + + var contents = new(tree.Anonymous)('data:'+mimetype+','+data); + + return new(tree.URL)(contents); } }; diff --git a/test/css/functions.css b/test/css/functions.css index c480a231..caa2a745 100644 --- a/test/css/functions.css +++ b/test/css/functions.css @@ -99,3 +99,6 @@ average: #7b007b; negation: #d73131; } +#data-uri { + background-image: url(data:image/jpeg;base64,bm90IGFjdHVhbGx5IGEganBlZyBmaWxlCg==); +} diff --git a/test/data/image.jpg b/test/data/image.jpg new file mode 100644 index 00000000..83f77790 --- /dev/null +++ b/test/data/image.jpg @@ -0,0 +1 @@ +not actually a jpeg file diff --git a/test/less/functions.less b/test/less/functions.less index 780ef2cb..4a4ec5b0 100644 --- a/test/less/functions.less +++ b/test/less/functions.less @@ -110,3 +110,7 @@ average: average(#f60000, #0000f6); negation: negation(#f60000, #313131); } + +#data-uri { + background-image: data-uri('image/jpeg;base64', 'test/data/image.jpg'); +}