Example #1
0
const notify = (ids,sobjs,compactLayout,defaultLayout,doRefs) => {
  if( compactLayout && defaultLayout ){
    if(!!!doRefs){
      return;
    }
    const refs = pull(compactLayout.refs, 'OwnerId');
    sobjs.forEach((sobj)=>{
      keys(refs).forEach(fieldName => {
        const type = refs[fieldName];
        const id = sobj[fieldName];
        requestWithTypeAndId(type,id);
      });
    });
  }

};
Example #2
0
 SourceAbstract.prototype.cancelPending = function () {
   var pending = _.where(pendingRequests, { source: this});
   _.pull.apply(_, [pendingRequests].concat(pending));
 };
Example #3
0
/*----------------------------------------------------------------------------*/

/**
 * Generates the documentation from JS source.
 *
 * @param {string} The source code to generate the documentation for.
 * @param {object} The options object.
 */
function generateDoc(source, options) {
  var api = [],
      byCategories = options.toc == 'categories',
      entries = getEntries(source),
      hashStyle = options.hash,
      organized = {},
      url = options.url;

  // Add entries and aliases to the API list.
  _.each(entries, function(entry) {
    entry = new Entry(entry, source);
    api.push(entry);

    var aliases = entry.getAliases();
    if (!_.isEmpty(aliases)) {
      push.apply(api, aliases);
    }
  });

  // Build the list of categories for the TOC and generate content for each entry.
  _.each(api, function(entry) {
    // Exit early if the entry is private or has no name.
    var name = entry.getName();
    if (!name || entry.isPrivate()) {
      return;
    }
    var tocGroup,
        member = entry.getMembers(0) || '',
        separator = member ? getSeparator(entry) : '';

    // Add the entry to the TOC.
    if (byCategories) {
      var category = entry.getCategory();
      tocGroup = organized[category] || (organized[category] = []);
    }
    else {
      var memberGroup;
      if (!member ||
          entry.isCtor() ||
          (entry.getType() == 'Object' &&
            !/[=:]\s*(?:null|undefined)\s*[,;]?$/gi.test(entry.entry))
      ) {
        memberGroup = (member ? member + getSeparator(entry) : '') + name;
      } else if (entry.isStatic()) {
        memberGroup = member;
      } else if (!entry.isCtor()) {
        memberGroup = member + getSeparator(entry).slice(0, -1);
      }
      tocGroup = organized[memberGroup] || (organized[memberGroup] = []);
    }
    tocGroup.push(entry);

    // Skip aliases.
    if (entry.isAlias()) {
      return;
    }
    // Start markdown for the entry.
    var entryMarkdown = ['\n<!-- div -->\n'];

    // Add the heading.
    entryMarkdown.push(
      interpolate([
        '### <a id="${hash}"></a>`${member}${separator}${call}`\n',
        '<a href="#${hash}">#</a> ',
        '[&#x24C8;](${href} "View in source") ',
        '[&#x24C9;][1] '
      ].concat(_.result(options, 'entryLinks', []).join(' ')).join(''), {
        'call':      entry.getCall(),
        'category':  entry.getCategory(),
        'hash':      entry.getHash(hashStyle),
        'href':      url + '#L' + entry.getLineNumber(),
        'member':    member,
        'name':      name,
        'separator': separator
      })
    );

    // Add the description.
    entryMarkdown.push('\n' + entry.getDesc() + '\n');

    // Add optional aliases.
    var aliases = entry.getAliases();
    if (!_.isEmpty(aliases)) {
      entryMarkdown.push('#### Aliases');
      entryMarkdown.push(
        '*' +
        _.map(aliases, function(alias) {
          return interpolate('${member}${separator}${name}', {
            'member': member,
            'name': alias.getName(),
            'separator': separator
          });
        }).join(', ') +
        '*'
      );
      entryMarkdown.push('');
    }
    // Add optional function parameters.
    var params = entry.getParams();
    if (!_.isEmpty(params)) {
      entryMarkdown.push('#### Arguments');
      _.each(params, function(param, index) {
        entryMarkdown.push(
          interpolate('${num}. `${name}` (${type}): ${desc}', {
            'desc': escape(param[2]),
            'name': param[1],
            'num':  index + 1,
            'type': escape(param[0])
          })
        );
      });
      entryMarkdown.push('');
    }
    // Add optional functions returns.
    var returns = entry.getReturns();
    if (!_.isEmpty(returns)) {
      entryMarkdown.push(
        '#### Returns',
        interpolate('(${type}): ${desc}', {
          'desc': escape(returns[1]),
          'type': escape(returns[0])
        }),
        ''
      );
    }
    // Add optional function example.
    var example = entry.getExample();
    if (example) {
      entryMarkdown.push('#### Example', example);
    }
    // End markdown for the entry.
    entryMarkdown.push('* * *\n\n<!-- /div -->');

    entry.markdown = entryMarkdown.join('\n');
  });

  // Add TOC headers.
  var tocGroups = _.keys(organized);
  if (byCategories) {
    // Remove special categories.
    _.pull.apply(_, [tocGroups].concat(specialCategories));

    // Sort categories and append special categories.
    tocGroups.sort(util.compareNatural);
    push.apply(tocGroups, specialCategories);
  }
  else {
    tocGroups.sort(util.compareNatural);
  }
  // Start markdown for TOC categories.
  var tocMarkdown = ['<!-- div class="toc-container" -->\n'];
  _.each(tocGroups, function(group) {
    tocMarkdown.push(
      '<!-- div -->\n',
      '## `' + group + '`'
    );

    if (organized[group]) {
      // Sort the TOC groups.
      organized[group].sort(function(value, other) {
        var valMember = value.getMembers(0),
            othMember = other.getMembers(0);

        return util.compareNatural(
          (valMember ? (valMember + getSeparator(value)) : '') + value.getName(),
          (othMember ? (othMember + getSeparator(other)) : '') + other.getName()
        );
      });
    }
    // Add TOC entries for each category.
    _.each(organized[group], function(entry) {
      var member = entry.getMembers(0) || '',
          name = entry.getName(),
          sep = getSeparator(entry),
          title = escape((member ? (member + sep) : '') + name);

      if (entry.isAlias()) {
        // An alias has a more complex html structure.
        var owner = entry.getOwner();
        tocMarkdown.push(
          '* <a href="#' + owner.getHash(hashStyle) + '" class="alias">`' +
          title + '` -> `' + owner.getName() + '`' +
          '</a>'
        );
      } else {
        // Add a simple TOC entry.
        tocMarkdown.push(
          '* ' +
          makeHashHTML(
            'href',
            '#' + entry.getHash(hashStyle),
            '`' + title + '`'
          )
        );
      }
    });
    tocMarkdown.push('\n<!-- /div -->\n');
  });

  // End markdown for the TOC.
  tocMarkdown.push('<!-- /div -->\n');

  var docMarkdown = ['# '+ options.title + '\n'];
  push.apply(docMarkdown, tocMarkdown);
  docMarkdown.push('<!-- div class="doc-container" -->\n');

  _.each(tocGroups, function(group) {
    docMarkdown.push('<!-- div -->\n');
    if (byCategories && !reSpecialCategory.test(group)) {
      var groupName = '“' + group + '” Methods';
    }
    docMarkdown.push('## `' + (groupName || group) + '`');
    _.each(organized[group], function(entry) {
      if (entry.markdown) {
        docMarkdown.push(entry.markdown);
      }
    });
   docMarkdown.push('\n<!-- /div -->\n');
  });

  docMarkdown.push('<!-- /div -->\n');

  // Add link back to the top of the TOC.
  var tocLink = _.result(options, 'tocLink', '#' + tocGroups[0].toLowerCase());
  docMarkdown.push(' [1]: ' + tocLink + ' "Jump back to the TOC."\n');

  return docMarkdown.join('\n');
}
 (response) => {
   opts.compactLayout = response;
   pull(requested,opts.type);
   broadcast(opts.type,opts.compactLayout);
   resolve(opts);
 }