@ribajs/shopify
Version:
Shopify extension for Riba.js
45 lines (41 loc) • 1.01 kB
text/typescript
import { Formatter } from "@ribajs/core";
/**
* Return a resized shopify image URL
* @see https://help.shopify.com/en/themes/liquid/filters/url-filters#img_url
*
* @param url
* @param size
* @param scale TODO
* @param crop TODO
* @param extension
*/
export const imgUrlFormatter: Formatter = {
name: "img_url",
read(
url: string,
size: string,
scale?: number,
crop?: string,
extension?: string,
// element?: HTMLImageElement
) {
try {
if (size === "original" || size === "master") {
return url;
}
if (scale && scale !== 1) {
size += "@" + scale + "x";
}
const result = url.match(/(.*\/[\w\-_.]+)\.(\w{2,4})/);
if (!result || !result[1] || !result[2]) {
throw new Error(`Can't match url ${url}`);
}
const path = result[1];
extension = extension || result[2];
return path + "_" + size + "." + extension;
} catch (error) {
console.error(error);
return url;
}
},
};