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);