mirror of
https://github.com/marty-oehme/scripts.git
synced 2024-12-21 23:48:08 +00:00
Add image-preview script.
This script does two things: 1) Display the image with an user defined width; 2) Wrap the image in an anchor tag that links to the full size image. TODO: do not resize the image when it does not have a width attribute AND is smaller than the maxWidth.
This commit is contained in:
parent
6107d333c3
commit
b149834b79
2 changed files with 94 additions and 0 deletions
85
image-preview/image-preview.qml
Normal file
85
image-preview/image-preview.qml
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
import QtQml 2.0
|
||||||
|
|
||||||
|
QtObject {
|
||||||
|
property int maxWidth;
|
||||||
|
|
||||||
|
property variant settingsVariables: [{
|
||||||
|
"identifier": "maxWidth",
|
||||||
|
"name": "Max width for image preview",
|
||||||
|
"description": "Note that when the original image width is unknown (e.g. when using Markdown-it), images with a smaller width than this setting will be blown-up. This can not be prevented right now.",
|
||||||
|
"type": "integer",
|
||||||
|
"default": "640",
|
||||||
|
}];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function is called when the markdown html of a note is generated
|
||||||
|
*
|
||||||
|
* It allows you to modify this html
|
||||||
|
* This is for example called before by the note preview
|
||||||
|
*
|
||||||
|
* @param {Note} note - the note object
|
||||||
|
* @param {string} html - the html that is about to being rendered
|
||||||
|
* @return {string} the modfied html or an empty string if nothing should be modified
|
||||||
|
*/
|
||||||
|
function noteToMarkdownHtmlHook(note, html) {
|
||||||
|
/**
|
||||||
|
* This script does two things:
|
||||||
|
* 1) Display the image with an user defined width;
|
||||||
|
* 2) Wrap the image in an anchor tag that links to the full size image.
|
||||||
|
* TODO: do not resize the image when it does not have a width attribute
|
||||||
|
* AND is smaller than the maxWidth. Wrapping an image in a table with
|
||||||
|
* `<td width="640">` does not work.
|
||||||
|
*/
|
||||||
|
html = html.replace(/<img(?:.[^>]*)/g, handleImg);
|
||||||
|
|
||||||
|
// script.log(html);
|
||||||
|
return html;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle image.
|
||||||
|
* @param imgTag
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
function handleImg(imgTag) {
|
||||||
|
var src = getImgSrc(imgTag);
|
||||||
|
imgTag = handleWidth(imgTag);
|
||||||
|
return '<a href="' + src + '">' + imgTag + '></a';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle width attribute.
|
||||||
|
* @param imgTag
|
||||||
|
* @returns {*}
|
||||||
|
*/
|
||||||
|
function handleWidth(imgTag) {
|
||||||
|
// Check if the img tag has a width attribute set.
|
||||||
|
var widthMatch = /(?:width=")(.[^"]*)/g.exec(imgTag);
|
||||||
|
// If the width attribute is larger than maxWidth, change.
|
||||||
|
if (widthMatch) {
|
||||||
|
var width = widthMatch[1];
|
||||||
|
if (width > maxWidth) {
|
||||||
|
imgTag = imgTag.replace(widthMatch[0], 'width="' + maxWidth);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// No width attribute, add one.
|
||||||
|
// TODO: blows up the image when original is smaller than maxWidth.
|
||||||
|
// This occurs when using Markdown-it for example.
|
||||||
|
else {
|
||||||
|
imgTag = imgTag.replace('<img', '<img width="' + maxWidth + '" ');
|
||||||
|
}
|
||||||
|
|
||||||
|
return imgTag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get image src attribute.
|
||||||
|
* @param imgTag
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
function getImgSrc(imgTag) {
|
||||||
|
var srcMatch = /(?:src=")(.[^"]*)/g.exec(imgTag);
|
||||||
|
var src = srcMatch[1];
|
||||||
|
return src;
|
||||||
|
}
|
||||||
|
}
|
9
image-preview/info.json
Normal file
9
image-preview/info.json
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"name": "Image preview",
|
||||||
|
"identifier": "image-preview",
|
||||||
|
"script": "image-preview.qml",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"minAppVersion": "17.11.6",
|
||||||
|
"authors": ["@sanderboom"],
|
||||||
|
"description" : "This script does two things: 1) Display the image with an user defined width; 2) Wrap the image in an anchor tag that links to the full size image."
|
||||||
|
}
|
Loading…
Reference in a new issue