Skip to content

Commit

Permalink
Version 1.5.0
Browse files Browse the repository at this point in the history
  • Loading branch information
cloudinary-bot committed Jan 17, 2022
1 parent 4d8db13 commit adc3d1d
Show file tree
Hide file tree
Showing 3 changed files with 197 additions and 49 deletions.
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
1.5.0 / 2022-01-17
==================

New functionality and features
------------------------------
* Add to/fromJson to return object instead of array
* Add Concatenate to/fromJson()
* Add Contrast to/fromJson()
* Add Brightness to/fromJson()
* Add Gamma to/fromJson()
* Add Saturation to/fromJson()
* Add DPR to/fromJson()

Other Changes
-------------
* Fix strength listed as level for toJson of unsharpMask, vignette, oilPaint
* Add CloudConfig exports to root level

1.4.2 / 2022-01-06
==================

Expand Down
226 changes: 178 additions & 48 deletions __DOCS__/JSDocTemplate/template/static/js/prism.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ var _self = (typeof window !== 'undefined')
var Prism = (function (_self) {

// Private helper vars
var lang = /\blang(?:uage)?-([\w-]+)\b/i;
var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i;
var uniqueId = 0;

// The grammar object for plaintext
Expand Down Expand Up @@ -54,6 +54,27 @@ var Prism = (function (_self) {
* @public
*/
manual: _self.Prism && _self.Prism.manual,
/**
* By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses
* `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your
* own worker, you don't want it to do this.
*
* By setting this value to `true`, Prism will not add its own listeners to the worker.
*
* You obviously have to change this value before Prism executes. To do this, you can add an
* empty Prism object into the global scope before loading the Prism script like this:
*
* ```js
* window.Prism = window.Prism || {};
* Prism.disableWorkerMessageHandler = true;
* // Load Prism's script
* ```
*
* @default false
* @type {boolean}
* @memberof Prism
* @public
*/
disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,

/**
Expand Down Expand Up @@ -168,15 +189,33 @@ var Prism = (function (_self) {
* @returns {string}
*/
getLanguage: function (element) {
while (element && !lang.test(element.className)) {
while (element) {
var m = lang.exec(element.className);
if (m) {
return m[1].toLowerCase();
}
element = element.parentElement;
}
if (element) {
return (element.className.match(lang) || [, 'none'])[1].toLowerCase();
}
return 'none';
},

/**
* Sets the Prism `language-xxxx` class of the given element.
*
* @param {Element} element
* @param {string} language
* @returns {void}
*/
setLanguage: function (element, language) {
// remove all `language-xxxx` classes
// (this might leave behind a leading space)
element.className = element.className.replace(RegExp(lang, 'gi'), '');

// add the new `language-xxxx` class
// (using `classList` will automatically clean up spaces for us)
element.classList.add('language-' + language);
},

/**
* Returns the script element that is currently executing.
*
Expand Down Expand Up @@ -531,12 +570,12 @@ var Prism = (function (_self) {
var grammar = _.languages[language];

// Set language on the element, if not present
element.className = element.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language;
_.util.setLanguage(element, language);

// Set language on the parent, for styling
var parent = element.parentElement;
if (parent && parent.nodeName.toLowerCase() === 'pre') {
parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language;
_.util.setLanguage(parent, language);
}

var code = element.textContent;
Expand Down Expand Up @@ -931,7 +970,7 @@ var Prism = (function (_self) {

if (greedy) {
match = matchPattern(pattern, pos, text, lookbehind);
if (!match) {
if (!match || match.index >= text.length) {
break;
}

Expand Down Expand Up @@ -1507,14 +1546,14 @@ Prism.languages.clike = {
greedy: true
},
'class-name': {
pattern: /(\b(?:class|interface|extends|implements|trait|instanceof|new)\s+|\bcatch\s+\()[\w.\\]+/i,
pattern: /(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,
lookbehind: true,
inside: {
'punctuation': /[.\\]/
}
},
'keyword': /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,
'boolean': /\b(?:true|false)\b/,
'keyword': /\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,
'boolean': /\b(?:false|true)\b/,
'function': /\b\w+(?=\()/,
'number': /\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,
'operator': /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,
Expand All @@ -1530,7 +1569,7 @@ Prism.languages.javascript = Prism.languages.extend('clike', {
'class-name': [
Prism.languages.clike['class-name'],
{
pattern: /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,
pattern: /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,
lookbehind: true
}
],
Expand All @@ -1546,11 +1585,38 @@ Prism.languages.javascript = Prism.languages.extend('clike', {
],
// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)
'function': /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
'number': /\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,
'number': {
pattern: RegExp(
/(^|[^\w$])/.source +
'(?:' +
(
// constant
/NaN|Infinity/.source +
'|' +
// binary integer
/0[bB][01]+(?:_[01]+)*n?/.source +
'|' +
// octal integer
/0[oO][0-7]+(?:_[0-7]+)*n?/.source +
'|' +
// hexadecimal integer
/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source +
'|' +
// decimal bigint
/\d+(?:_\d+)*n/.source +
'|' +
// decimal number (integer or float) but no bigint
/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source
) +
')' +
/(?![\w$])/.source
),
lookbehind: true
},
'operator': /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/
});

Prism.languages.javascript['class-name'][0].pattern = /(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/;
Prism.languages.javascript['class-name'][0].pattern = /(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;

Prism.languages.insertBefore('javascript', 'keyword', {
'regex': {
Expand Down Expand Up @@ -1626,9 +1692,23 @@ Prism.languages.insertBefore('javascript', 'string', {
},
'string': /[\s\S]+/
}
},
'string-property': {
pattern: /((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,
lookbehind: true,
greedy: true,
alias: 'property'
}
});

Prism.languages.insertBefore('javascript', 'operator', {
'literal-property': {
pattern: /((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,
lookbehind: true,
alias: 'property'
},
});

if (Prism.languages.markup) {
Prism.languages.markup.tag.addInlined('script', 'javascript');

Expand Down Expand Up @@ -1684,21 +1764,57 @@ Prism.languages.js = Prism.languages.javascript;
var SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '="' + STATUS_LOADED + '"])'
+ ':not([' + STATUS_ATTR + '="' + STATUS_LOADING + '"])';

var lang = /\blang(?:uage)?-([\w-]+)\b/i;

/**
* Sets the Prism `language-xxxx` or `lang-xxxx` class to the given language.
* Loads the given file.
*
* @param {HTMLElement} element
* @param {string} language
* @returns {void}
* @param {string} src The URL or path of the source file to load.
* @param {(result: string) => void} success
* @param {(reason: string) => void} error
*/
function setLanguageClass(element, language) {
var className = element.className;
className = className.replace(lang, ' ') + ' language-' + language;
element.className = className.replace(/\s+/g, ' ').trim();
function loadFile(src, success, error) {
var xhr = new XMLHttpRequest();
xhr.open('GET', src, true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status < 400 && xhr.responseText) {
success(xhr.responseText);
} else {
if (xhr.status >= 400) {
error(FAILURE_MESSAGE(xhr.status, xhr.statusText));
} else {
error(FAILURE_EMPTY_MESSAGE);
}
}
}
};
xhr.send(null);
}

/**
* Parses the given range.
*
* This returns a range with inclusive ends.
*
* @param {string | null | undefined} range
* @returns {[number, number | undefined] | undefined}
*/
function parseRange(range) {
var m = /^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(range || '');
if (m) {
var start = Number(m[1]);
var comma = m[2];
var end = m[3];

if (!comma) {
return [start, start];
}
if (!end) {
return [start, undefined];
}
return [start, Number(end)];
}
return undefined;
}

Prism.hooks.add('before-highlightall', function (env) {
env.selector += ', ' + SELECTOR;
Expand Down Expand Up @@ -1726,8 +1842,8 @@ Prism.languages.js = Prism.languages.javascript;
}

// set language classes
setLanguageClass(code, language);
setLanguageClass(pre, language);
Prism.util.setLanguage(code, language);
Prism.util.setLanguage(pre, language);

// preload the language
var autoloader = Prism.plugins.autoloader;
Expand All @@ -1736,31 +1852,45 @@ Prism.languages.js = Prism.languages.javascript;
}

// load file
var xhr = new XMLHttpRequest();
xhr.open('GET', src, true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status < 400 && xhr.responseText) {
// mark as loaded
pre.setAttribute(STATUS_ATTR, STATUS_LOADED);

// highlight code
code.textContent = xhr.responseText;
Prism.highlightElement(code);

} else {
// mark as failed
pre.setAttribute(STATUS_ATTR, STATUS_FAILED);

if (xhr.status >= 400) {
code.textContent = FAILURE_MESSAGE(xhr.status, xhr.statusText);
} else {
code.textContent = FAILURE_EMPTY_MESSAGE;
loadFile(
src,
function (text) {
// mark as loaded
pre.setAttribute(STATUS_ATTR, STATUS_LOADED);

// handle data-range
var range = parseRange(pre.getAttribute('data-range'));
if (range) {
var lines = text.split(/\r\n?|\n/g);

// the range is one-based and inclusive on both ends
var start = range[0];
var end = range[1] == null ? lines.length : range[1];

if (start < 0) { start += lines.length; }
start = Math.max(0, Math.min(start - 1, lines.length));
if (end < 0) { end += lines.length; }
end = Math.max(0, Math.min(end, lines.length));

text = lines.slice(start, end).join('\n');

// add data-start for line numbers
if (!pre.hasAttribute('data-start')) {
pre.setAttribute('data-start', String(start + 1));
}
}

// highlight code
code.textContent = text;
Prism.highlightElement(code);
},
function (error) {
// mark as failed
pre.setAttribute(STATUS_ATTR, STATUS_FAILED);

code.textContent = error;
}
};
xhr.send(null);
);
}
});

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@cloudinary/url-gen",
"version": "1.4.2",
"version": "1.5.0",
"description": "",
"scripts": {
"test": "npm run test:types && npm run build && jest --coverage --reporters default && npm run test:size",
Expand Down

0 comments on commit adc3d1d

Please sign in to comment.