Test reverse lookup with no leading zeros
This commit is contained in:
@@ -37,6 +37,27 @@ const namePos = {
|
|||||||
dn: 2
|
dn: 2
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove leading zeroes
|
||||||
|
* from canvas and image file
|
||||||
|
* name segments (parts)
|
||||||
|
* @see getCanvasName()
|
||||||
|
* @see ManifestBuilder.getImageName()
|
||||||
|
* @param {String} segment
|
||||||
|
*/
|
||||||
|
const normaliseSegment = (segment) => {
|
||||||
|
segment.replaceAll(/^([a-z]+)?0*(\d+)/ig, '$1$2');
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Normalize a full canvas name
|
||||||
|
* @param {String} name
|
||||||
|
*/
|
||||||
|
const normaliseName = (name) => {
|
||||||
|
// Account for separate parts in name
|
||||||
|
// and rejoin them after normalisation
|
||||||
|
name.split('&').map(normaliseSegment).join('&');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} imgFilename
|
* @param {string} imgFilename
|
||||||
* @returns {ParsedMetadata}
|
* @returns {ParsedMetadata}
|
||||||
@@ -180,15 +201,31 @@ export function getCanvasName(imgFilename, technique) {
|
|||||||
canvasName += imgFilename.split('_')[3].replace(/\..*$/,'');
|
canvasName += imgFilename.split('_')[3].replace(/\..*$/,'');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if name is of `fr01&02` type...
|
return normaliseName(canvasName);
|
||||||
let names = canvasName.split('&');
|
}
|
||||||
|
/**
|
||||||
|
* Get image name for given canvas
|
||||||
|
* @param {Canvas} canvas The Canvas object
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
async function getImageName(canvas) {
|
||||||
|
const images = await getImageList(canvas.resourceId);
|
||||||
|
let adjustedCanvasName = canvas.name;
|
||||||
|
|
||||||
// Remove leading zeroes everywhere
|
// Adjust canvas name for HSI with PCA...
|
||||||
names = names.map(name => name.replaceAll(/^([a-z]+)?0*(\d+)/ig, '$1$2'));
|
if (/pc(1|3)/.test(canvas.name)) {
|
||||||
// Rejoin if needed...
|
adjustedCanvasName = canvas.name.replace(
|
||||||
canvasName = names.join('&');
|
/pc((1|3))/,
|
||||||
|
function (match, group1) {
|
||||||
|
return `_HSI_PC${group1}`;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return canvasName;
|
return images.filter(i => {
|
||||||
|
const segment = i.split('_')[namePos[canvas.technique]];
|
||||||
|
return normaliseName(segment) === adjustedCanvasName;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Generate canvas label from canvasName
|
* Generate canvas label from canvasName
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ export async function buildManifest(manifestId) {
|
|||||||
export async function buildCanvas(manifestId, name) {
|
export async function buildCanvas(manifestId, name) {
|
||||||
const manifest = new Manifest(IIIF_API_VERSION, BASE_URL);
|
const manifest = new Manifest(IIIF_API_VERSION, BASE_URL);
|
||||||
manifest.generateID(manifestId);
|
manifest.generateID(manifestId);
|
||||||
let filename = await getImageName(name, manifestId);
|
let filename = await getImageName(name, manifest);
|
||||||
|
|
||||||
return createCanvas(manifest, filename);
|
return createCanvas(manifest, filename);
|
||||||
}
|
}
|
||||||
@@ -143,7 +143,6 @@ async function populateCanvases (manifest, images) {
|
|||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Get image name for given canvas
|
* Get image name for given canvas
|
||||||
* @todo Use regex in filter!!
|
|
||||||
* @param {String} name The canvas name
|
* @param {String} name The canvas name
|
||||||
* @param {String} manifestId The manifest (resource) id
|
* @param {String} manifestId The manifest (resource) id
|
||||||
* @returns {string}
|
* @returns {string}
|
||||||
|
|||||||
Reference in New Issue
Block a user