Regular Expression Test
Test for regular expression course work 4
by sqiudward
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
JavaScript
var re = /\@[Pp][Aa][Rr][Tt][Ii][Aa][Ll]_[Tt][Aa][Rr][Gg][Ee][Tt]\(.*?\)/gm;
var pt = "SELECT * FROM @SCHEMA.@TABLE";
var t = "@pARTIAL_TARGET(SCHEMA:ALPHA,TABLE:TABLE_A) UNION ALL @PARTIAL_TARGET(SCHEMA:BETA,TABLE:TABLE_B)";
var ft = t;
var m;
var paramsCollection = [];
do {
m = re.exec(t);
if (m) {
var paramsDictionary = [];
var keyValues = m[0].substring(_.indexOf(m[0], '(') + 1, _.indexOf(m[0], ')')).split(',');
var paramsArray = _(keyValues).map(function(x){
var keyVal = x.split(':');
return ["@" + keyVal[0], keyVal[1]];
}).value();
paramsCollection.push({
method: m[0],
methodPosition: m.index,
params: paramsArray
});
//console.log(m);
//console.log(keyValues);
//console.warn(paramsDictionary);
}
} while (m);
console.warn(paramsCollection);
_(paramsCollection).map(function(pc) {
var ppt = pt;
_(pc.params).map(function(p){
ppt = ppt.replace(p[0], p[1]);
}).value();
ft = ft.replace(pc.method, ppt);
}).value();
console.log(ft);