/**
* @Modul Filter-Quelle
* /
importiere {isObject} von './obj';
importiere {getMimetype} von './mimetypes';
/**
* Herausfiltern einzelner schlechter Quellobjekte oder mehrerer Quellobjekte in einer
* array. Verflacht auch verschachtelte Quellobjekt-Arrays zu einem 1-dimensionalen
* array von Quellobjekten.
*
* @param {Tech~SourceObject|Tech~SourceObject[]} src
* Das zu filternde src-Objekt
*
* @return {Tech~SourceObject[]}
* Ein Array von Quellobjekten, das nur gültige Quellen enthält
*
* @privat
* /
const filterSource = function(src) {
// Array durchlaufen
if (Array.isArray(src)) {
let newsrc = [];
src.forEach(function(srcobj) {
srcobj = filterSource(srcobj);
if (Array.isArray(srcobj)) {
newsrc = newsrc.concat(srcobj);
} else if (isObject(srcobj)) {
newsrc.push(srcobj);
}
});
src = newsrc;
} else if (typeof src === 'string' && src.trim()) {
// String in Objekt umwandeln
src = [fixSource({src})];
} else if (isObject(src) && typeof src.src === 'string' && src.src && src.src.trim()) {
// src ist bereits gültig
src = [fixSource(src)];
} else {
// ungültige Quelle, in ein leeres Array umwandeln
src = [];
}
return src;
};
/**
* Prüft src-Mimetyp und fügt ihn, wenn möglich, hinzu
*
* @param {Tech~SourceObject} src
* Das zu prüfende src-Objekt
* @return {Tech~SourceObject}
* src Objekt mit bekanntem Typ
* /
function fixSource(src) {
if (!src.type) {
const mimetype = getMimetype(src.src);
if (mimetype) {
src.type = mimetype;
}
}
return src;
}
exportieren standard filterSource;