Rule can be written in the form of a JavaScript function.
Function wrapper
Your code is going to be wrapped with the following function:
async function(text, thisModel = {}) {
// your code
}
You can access arguments
object and this
keyword.
Arguments
The code you write will be inside a function with 2 arguments that can be accessed anywhere in your code:
- textStringA string of the entire content of the file.
- thisModelObjectThe rule object that is currently used by the file.
this Keyword
this will reffer to the instance of CustomParser class
.
Expected Return Value
Your code must return one of the following value:
undefined
- Offset of the captured text, for example:
{
start:100,
end:120
}
- Array of the offset of the captured text, for example:
[
{start:0, end:5},
{start:12, end:30},
{start:4581, end:4593}
]
Example
The following code is an example to parse srt subtitle.
/*
Translator++ is using regexp-match-indices
by that all RegExp.exec() method will return their group offset
read more about Regular Expression Indices here: https://v8.dev/features/regexp-match-indices
*/
var result = [];
var captureGroup = 1;
var regex = /\d+[\r\n]+\d+:\d+:\d+,\d+ --> \d+:\d+:\d+,\d+[\r\n]+((.+\r?\n)+(?=(\r?\n)?))/g;
while(null != (matches=regex.exec(text))) {
console.log(matches);
result.push({
start : matches.indices[captureGroup][0],
end : matches.indices[captureGroup][1]
})
}
return result;