This commit is contained in:
68
node_modules/licia/dataUrl.js
generated
vendored
Normal file
68
node_modules/licia/dataUrl.js
generated
vendored
Normal file
@@ -0,0 +1,68 @@
|
||||
var isDataUrl = require('./isDataUrl');
|
||||
var trim = require('./trim');
|
||||
var endWith = require('./endWith');
|
||||
var startWith = require('./startWith');
|
||||
var contain = require('./contain');
|
||||
var decodeUriComponent = require('./decodeUriComponent');
|
||||
var defaults = require('./defaults');
|
||||
var isStr = require('./isStr');
|
||||
var convertBin = require('./convertBin');
|
||||
exports = {
|
||||
parse: function(dataUrl) {
|
||||
if (!isDataUrl(dataUrl)) {
|
||||
return null;
|
||||
}
|
||||
dataUrl = dataUrl.slice('data:'.length);
|
||||
var commaIdx = dataUrl.indexOf(',');
|
||||
var mime = trim(dataUrl.slice(0, commaIdx));
|
||||
var data = trim(dataUrl.slice(commaIdx + 1));
|
||||
var base64 = false;
|
||||
if (endWith(mime, ';base64')) {
|
||||
base64 = true;
|
||||
mime = mime.slice(0, -';base64'.length);
|
||||
}
|
||||
var charset = '';
|
||||
if (contain(mime, 'charset=')) {
|
||||
charset = mime.split('charset=')[1];
|
||||
mime = mime.split(';')[0];
|
||||
}
|
||||
if (!mime) {
|
||||
mime = 'text/plain';
|
||||
}
|
||||
if (!base64 && startWith(mime, 'text/') && contain(data, '%')) {
|
||||
data = decodeUriComponent(data);
|
||||
}
|
||||
return {
|
||||
data: data,
|
||||
mime: mime,
|
||||
charset: charset,
|
||||
base64: base64
|
||||
};
|
||||
},
|
||||
stringify: function(data, mime) {
|
||||
var options =
|
||||
arguments.length > 2 && arguments[2] !== undefined
|
||||
? arguments[2]
|
||||
: {};
|
||||
defaults(options, {
|
||||
base64: true,
|
||||
charset: ''
|
||||
});
|
||||
var result = 'data:' + mime;
|
||||
if (options.charset && startWith(mime, 'text/')) {
|
||||
result += ';charset=' + options.charset;
|
||||
}
|
||||
if (!isStr(data)) {
|
||||
data = convertBin(data, 'base64');
|
||||
options.base64 = true;
|
||||
}
|
||||
if (options.base64) {
|
||||
result += ';base64';
|
||||
} else if (startWith(mime, 'text/') || !mime) {
|
||||
data = encodeURIComponent(data);
|
||||
}
|
||||
return result + ',' + data;
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = exports;
|
||||
Reference in New Issue
Block a user