48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // var first_time = true; // DIAGNOSTIC
 | |
| 
 | |
| function translate(html, rulesFile) {
 | |
|   rulesFile.rulesToApply.forEach(function(rxDatum) {
 | |
|     var rxRule = rulesFile.rules[rxDatum.pattern];
 | |
|     // rxFrom is a rexexp
 | |
|     var rxFrom = rxRule.from;
 | |
|     if (rxDatum.from) {
 | |
|       var from = rxDatum.from.replace('/', '\/');
 | |
|       var rxTemp = rxFrom.toString();
 | |
|       rxTemp = rxTemp.replace('%tag%', from);
 | |
|       rxFrom = rxFromString(rxTemp);
 | |
|     }
 | |
|     // rxTo is a string
 | |
|     var rxTo = rxRule.to;
 | |
|     if (rxDatum.to) {
 | |
|       var to = rxDatum.to;
 | |
|       to = Array.isArray(to) ? to : [to];
 | |
|       to = to.map(function (toItem) {
 | |
|         return rxTo.replace("%tag%", toItem);
 | |
|       });
 | |
|       rxTo = to.join("\n    ");
 | |
|     }
 | |
| 
 | |
|     /* DIAGNOSTIC
 | |
|     if (first_time && rxDatum.pattern === 'zone_pkg') {
 | |
|       first_time = false;
 | |
| 
 | |
|       console.log('zone_pkg');
 | |
|       console.log('  rxFrom: '+rxFrom);
 | |
|       console.log('  rxTo: '+rxTo);
 | |
|       console.log('  replace: ' + html.replace(rxFrom, rxTo ));
 | |
|     }
 | |
|     */
 | |
|     html = html.replace(rxFrom, rxTo );
 | |
|   });
 | |
| 
 | |
|   return html;
 | |
| }
 | |
| 
 | |
| function rxFromString(rxString) {
 | |
|   var rx = /^\/(.*)\/(.*)/;
 | |
|   var pieces = rx.exec(rxString);
 | |
|   return RegExp(pieces[1], pieces[2]);
 | |
| }
 | |
| 
 | |
| module.exports = {translate: translate};
 |