JSFiddle - React, Tailwind, and code Playground

by Alexandre Simoes

JavaScript

function convertToRange(args){
  var rowKeywordRegExp = /^clt-([a-zA-Z]+)-?(c\d+)?:?(c\d+)?-?([^-:]+)?$/i,
      globalKeywordRegExp = /^clt-([a-zA-Z]+)-r(\d+):c(\d+)-r(\d+):c(\d+)-?(.+)?$/i;;

  if(isRowKeyword(args.keyword))
  	return fromRowKeyword(args);
  else if(isGlobalKeyword(args.keyword))
  	return fromGlobalKeyword(args);
  else
  	return null;

  function isRowKeyword(keyword){
    return rowKeywordRegExp.test(keyword);
  }
  function isGlobalKeyword(keyword){
    return globalKeywordRegExp.test(keyword);
  }
	
	function fromRowKeyword(args){
    var kReg = rowKeywordRegExp;
    var values = kReg.exec(args.keyword);

    var c1 = values[2] === undefined ? '1' : values[2].substring(1),
        c2 = null;

    if(values[2] === undefined)
      c2 = 999;
    else
      c2 = values[3] === undefined ? c1 : values[3].substring(1);

    //args.keyword =
    return 'clt-' + values[1] +
      '-r' + args.rowNumber +
      ':c' + c1 +
      '-r' + args.rowNumber +
      ':c' + c2 +
      (values[4] !== undefined ? ('-' + values[4]) : '');  
  }
  
  function fromGlobalKeyword(args){
  	// nothing to be done
    return args.keyword;
  }
}

// TEST!
var testCases = [
	// *** ROW KEYWORDS ***
	{ keyword: 'clt-itl', rowNumber: 5, expResult: 'clt-itl-r5:c1-r5:c999' },
  { keyword: 'clt-hgt-200', rowNumber: 5, expResult: 'clt-hgt-r5:c1-r5:c999-200' },
	{ keyword: 'clt-itl-c2', rowNumber: 5, expResult: 'clt-itl-r5:c2-r5:c2' },
  { keyword: 'clt-fgc-c2-yellow', rowNumber: 5, expResult: 'clt-fgc-r5:c2-r5:c2-yellow' },
	{ keyword: 'clt-bld-c2:c5', rowNumber: 5, expResult: 'clt-bld-r5:c2-r5:c5' },
  { keyword: 'clt-bgc-c2:c5-green', rowNumber: 5, expResult: 'clt-bgc-r5:c2-r5:c5-green' },
  // *** GLOBAL KEYWORDS ***
  { keyword: 'clt-itl-r1:c2-r3:c5', rowNumber: 5, expResult: 'clt-itl-r1:c2-r3:c5' },
  { keyword: 'clt-bgc-r1:c2-r3:c5-green', rowNumber: 5, expResult: 'clt-bgc-r1:c2-r3:c5-green' }
];

for(var i=0; i<testCases.length; i++){
	var tc = testCases[i],
  		result...