function preprocessDescription()

in sync-api-docs/generateMarkdown.js [242:310]


function preprocessDescription(desc) {
  // Playground tabs for the class and functional components
  const playgroundTab = `<div class="toggler">
    <ul role="tablist" class="toggle-syntax">
      <li id="functional" class="button-functional" aria-selected="false" role="tab" tabindex="0" aria-controls="functionaltab" onclick="displayTabs('syntax', 'functional')">
        Function Component Example
      </li>
      <li id="classical" class="button-classical" aria-selected="false" role="tab" tabindex="0" aria-controls="classicaltab" onclick="displayTabs('syntax', 'classical')">
        Class Component Example
      </li>
    </ul>
  </div>`;

  //Blocks for different syntax sections
  const functionalBlock = `<block class='functional syntax' />`;
  const classBlock = `<block class='classical syntax' />`;
  const endBlock = `<block class='endBlock syntax' />`;

  desc = desc
    .split('\n')
    .map(line => {
      return line.replace(/  /, '');
    })
    .join('\n');

  const descriptionTokenized = tokenizeComment(desc);
  // Tabs counter for examples
  let tabs = 0;
  descriptionTokenized.examples.map(item => {
    const matchSnackPlayer = item.language.match(/(SnackPlayer name=).*/g);
    if (matchSnackPlayer) {
      const matchClassComp = matchSnackPlayer[0].match(
        /Class%20Component%20Example/
      );
      const matchFuncComp = matchSnackPlayer[0].match(
        /Function%20Component%20Example/
      );
      if (matchClassComp || matchFuncComp) tabs++;
    }
  });

  if (tabs === 2) {
    const firstExample = desc.slice(desc.search('```SnackPlayer') + 1);
    const secondExample = firstExample.slice(
      firstExample.search('```SnackPlayer') + 1
    );

    return (
      desc.substring(0, desc.search('```SnackPlayer')) +
      `\n## Example\n` +
      `${playgroundTab}\n\n${functionalBlock}\n\n${
        '`' + firstExample.slice(0, firstExample.search('```') + 3)
      }\n\n${classBlock}\n\n${
        '`' + secondExample.slice(0, secondExample.search('```') + 3)
      }\n\n${endBlock}` +
      secondExample.slice(secondExample.search('```') + 3)
    );
  } else {
    if (desc.search('```SnackPlayer') !== -1) {
      return (
        desc.slice(0, desc.search('```SnackPlayer')) +
        '\n' +
        '\n## Example\n' +
        '\n' +
        desc.slice(desc.search('```SnackPlayer'))
      );
    } else return desc;
  }
}