docs: function buildJsDocs(schema, options) {
    //console.log('skemer.buildJsDocs called', util.inspect(arguments));
    
    // Validate schema
    schema = validateData({
      schema: schemas.schema,
      keepNull: true
    }, {}, schema);
  
    // Validate options
    options = validateData({
      schema: schemas.buildDocOptions
    }, {}, {}, options);
  
    //console.log('\n\noptions are', options);
  
    var doc = '';
  
    var tw = options.tabWidth;
    var c, s, w, line, l;
    var lines = buildLines(schema, options, options.parameter);
    var block;
  
    if (options.wrap) {
      for (l in lines) {
        line = options.preLine + lines[l];
  
        c = 0;
        s = 0;
        w = 0;
  
        // Find length of jsdoc tag
        if (options.lineup) {
          if ((block = line.match(/@\S+/))) {
            block = Array(block[0].length + 1).join(' ');
          } else {
            block = Array(3).join(' ');
          }
        }
  
        while (c < line.length) {
          if (line[c] === ' ') {
            s = c;
          } else if (line[c] === "\t") {
            w += tw - 1;
            s = c;
          }
          w++;
          if (w > options.wrap) {
            // @TODO test that s does not equal 0
            doc += line.slice(0, s) + "\n";
            line = options.preLine + (options.lineup ? block : '')
                + line.slice(s);
            c = 0;
            s = 0;
            w = 0;
          } else {
            c++;
          }
        }
        if (line) {
          doc += line + "\n";
        }
      }
    } else {
      doc = lines.join("\n");
    }
  
    return doc;
  }