This commit is contained in:
69
node_modules/licia/meta.js
generated
vendored
Normal file
69
node_modules/licia/meta.js
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
var each = require('./each');
|
||||
var isStr = require('./isStr');
|
||||
var isUndef = require('./isUndef');
|
||||
var contain = require('./contain');
|
||||
var isArr = require('./isArr');
|
||||
var isObj = require('./isObj');
|
||||
var toArr = require('./toArr');
|
||||
exports = function(name, content) {
|
||||
if (isUndef(name)) return getAllMeta();
|
||||
var isGetter = (isStr(name) && isUndef(content)) || isArr(name);
|
||||
if (isGetter) return getMeta(name);
|
||||
var metas = name;
|
||||
if (!isObj(metas)) {
|
||||
metas = {};
|
||||
metas[name] = content;
|
||||
}
|
||||
setMeta(metas);
|
||||
};
|
||||
exports.remove = function(nameList) {
|
||||
nameList = toArr(nameList);
|
||||
each(nameList, function(name) {
|
||||
var meta = selectMeta(name);
|
||||
if (meta) doc.head.removeChild(meta);
|
||||
});
|
||||
};
|
||||
var doc = document;
|
||||
function getAllMeta() {
|
||||
var ret = {};
|
||||
metaEach(function(name, content) {
|
||||
ret[name] = content;
|
||||
});
|
||||
return ret;
|
||||
}
|
||||
function getMeta(name) {
|
||||
if (isStr(name)) {
|
||||
var meta = selectMeta(name);
|
||||
if (meta) return meta.getAttribute('content');
|
||||
} else {
|
||||
var ret = {};
|
||||
metaEach(function(key, val) {
|
||||
if (contain(name, key)) ret[key] = val;
|
||||
});
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
function setMeta(metas) {
|
||||
each(metas, function(content, name) {
|
||||
var meta = selectMeta(name);
|
||||
if (meta) return meta.setAttribute('content', content);
|
||||
meta = doc.createElement('meta');
|
||||
meta.setAttribute('name', name);
|
||||
meta.setAttribute('content', content);
|
||||
doc.head.appendChild(meta);
|
||||
});
|
||||
}
|
||||
function metaEach(fn) {
|
||||
var metaList = doc.querySelectorAll('meta');
|
||||
each(metaList, function(meta) {
|
||||
var name = meta.getAttribute('name');
|
||||
var content = meta.getAttribute('content');
|
||||
if (!name || !content) return;
|
||||
fn(name, content);
|
||||
});
|
||||
}
|
||||
function selectMeta(name) {
|
||||
return doc.querySelector('meta[name="' + name + '"]');
|
||||
}
|
||||
|
||||
module.exports = exports;
|
||||
Reference in New Issue
Block a user