constructSelector = function (val) {
  var content = null;

  if (val.is('arguments')) {
    content = constructSubSelector(val, '(', ')', constructSelector);
  }

  else if (val.is('atkeyword')) {
    content = constructSubSelector(val, '@', '', constructSelector);
  }

  else if (val.is('attributeSelector')) {
    content = constructSubSelector(val, '[', ']', constructSelector);
  }

  else if (val.is('class')) {
    content = addGrammar(val, '.', '');
  }

  else if (val.is('id')) {
    content = addGrammar(val, '#', '');
  }

  else if (val.is('interpolation')) {
    content = constructSubSelector(val, '#{', '}', constructSelector);
  }

  else if (val.is('nth')) {
    content = addGrammar(val, '(', ')');
  }

  else if (val.is('nthSelector')) {
    content = constructSubSelector(val, ':', '', constructSelector);
  }

  else if (val.is('parentheses')) {
    content = constructSubSelector(val, '(', ')', constructSelector);
  }

  else if (val.is('placeholder')) {
    content = constructSubSelector(val, '%', '', constructSelector);
  }

  else if (val.is('pseudoClass')) {
    content = constructSubSelector(val, ':', '', constructSelector);
  }

  else if (val.is('pseudoElement')) {
    content = addGrammar(val, '::', '');
  }

  else if (val.is('space')) {
    content = ' ';
  }

  else if (val.is('variable')) {
    content = constructSubSelector(val, '$', '', constructSelector);
  }

  else if (simpleIdents.indexOf(val.type) !== -1) {
    content = val.content;
  }

  else if (subSelectors.indexOf(val.type) !== -1) {
    content = constructSubSelector(val, '', '', constructSelector);
  }

  return content;
}
Constructs a syntax complete selector for our selector matching and warning output

@param {object} val - The current node / part of our selector
@returns {string} - Content: The current node with correct syntax e.g. class my-class = '.my-class'