code: function parseStruct (struct) {
    var s = struct.substring(1, struct.length-1)
      , equalIndex = s.indexOf('=')
      , rtn = {
          name: s.substring(0, equalIndex)
        , props: []
      }
    s = s.substring(equalIndex+1);
  
    var curProp = [], numBrackets = 0, entries = [];
  
    for (var i=0; i < s.length; i++) {
      var cur = s[i];
      switch (cur) {
        case '"':
          if (numBrackets > 0)
            curProp.push(cur);
          else {
            entries.push(curProp.join(''));
            curProp = [];
            numBrackets = 0;
          }
          break;
        case '{':
        case '[':
        case '(':
          numBrackets++;
          curProp.push(cur);
          break;
        case '}':
        case ']':
        case ')':
          numBrackets--;
          curProp.push(cur);
          break;
        default:
          curProp.push(cur);
          break;
      }
    }
    entries.push(curProp.join(''));
    curProp = [];
    numBrackets = 0;
  
    for (var i=1; i < entries.length; i+=2) {
      rtn.props.push([entries[i], entries[i+1]]);
    }
    return rtn
  }
docs: Parses a struct type string into an Object with a `name` String and
  a `props` Array (entries are a type string, or another parsed struct object)
  
  @api private