I need to covert all my jsdoc array syntax from []
to Array
. I using Sublime Text trying to create a find and replace regex to handle the following cases:
/**
* @param {[]}
* @param {[]|null}
* @param {null|[]}
* @param {[someType]}
* @param {someType|[someType]}
**/
So here is what the output should be:
/**
* @param {Array}
* @param {Array|null}
* @param {null|Array}
* @param {Array.<someType>}
* @param {someType|Array.<someType>}
**/
The regex shouldn’t interfere with js, for example:
const thing1 = [something];
const thing2 = [];
const thing3 = {thang: []};
const thing4 = {thang: [something]};
Advertisement
Answer
You can use a RegEx replace for this, for example in Visual Studio Code.
You’ll have to look at both cases separately, one case where it’s just []
and one where it’s [someType]
. You can then reference the capture groups from your regular expression in your replace to retain custom content.
- The pattern for the
[]
case would be along the lines of@param(.*?)[]
and the replace something like@param$1Array
- The pattern for the
[someType]
part would be along the lines of@param(.*?)[(.*?)]
with the replace being@param$1Array.$2
I’ve tested this successfully for the example you provided, but try it on a spare file first. Generally, the process is always the same: Select all you need in a capture group, then replace the matches in a way that retains the existing content and applies your updates.