1
2
3
4
5
6
7
8
9
|
1
2
3
4
5
6
7
8
9
10
|
+
|
// regex
/*jslint esversion: 6*/
if (RegExp.prototype.grammalecte === undefined) {
RegExp.prototype.gl_exec2 = function (sText, aGroupsPos, aNegLookBefore=null) {
let m;
while ((m = this.exec(sText)) !== null) {
// we have to iterate over sText here too
// because first match doesn’t imply it’s a valid match according to negative lookbefore assertions,
|
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
-
+
-
+
-
+
-
+
|
m.end.push(m.index + codePos + m[i].length);
} else if (codePos === "$") {
// at the end of the pattern
m.start.push(this.lastIndex - m[i].length);
m.end.push(this.lastIndex);
} else if (codePos === "w") {
// word in the middle of the pattern
iPos = m[0].search("[ ’,()«»“”]"+m[i]+"[ ,’()«»“”]") + 1 + m.index
iPos = m[0].search("[ ’,()«»“”]"+m[i]+"[ ,’()«»“”]") + 1 + m.index;
m.start.push(iPos);
m.end.push(iPos + m[i].length)
m.end.push(iPos + m[i].length);
} else if (codePos === "*") {
// anywhere
iPos = m[0].indexOf(m[i]) + m.index;
m.start.push(iPos);
m.end.push(iPos + m[i].length)
m.end.push(iPos + m[i].length);
} else if (codePos === "**") {
// anywhere after previous group
iPos = m[0].indexOf(m[i], m.end[i-1]-m.index) + m.index;
m.start.push(iPos);
m.end.push(iPos + m[i].length)
m.end.push(iPos + m[i].length);
} else if (codePos.startsWith(">")) {
// >x:_
// todo: look in substring x
iPos = m[0].indexOf(m[i]) + m.index;
m.start.push(iPos);
m.end.push(iPos + m[i].length);
} else {
|
79
80
81
82
83
84
85
86
87
88
89
|
80
81
82
83
84
85
86
87
88
89
90
|
-
+
|
if (typeof(helpers) !== "undefined") {
helpers.logerror(e);
} else {
console.error(e);
}
}
return m;
}
};
RegExp.prototype.grammalecte = true;
}
|