process: function()

in tools/api-builder/angular.io-package/rendering/indentForMarkdown.js [5:51]


    process: function (str, width ) {
      if(str == null || str.length === 0) {
        return '';
      }
      width = width || 4;

      var lines = str.split('\n');
      var newLines = [];
      var sp = spaces(width);
      var spMixin = spaces(width - 2);
      var isAfterMarkdownTag = true;
      lines.forEach(function(line) {
        // indent lines that match mixin pattern by 2 less than specified width
        if (line.indexOf('{@example') >= 0) {
          if (isAfterMarkdownTag) {
            // happens if example follows example
            if (newLines.length > 0) {
              newLines.pop();
            } else {
              // wierd case - first expression in str is an @example
              // in this case the :marked appear above the str passed in,
              // so we need to put 'something' into the markdown tag.
              newLines.push(sp + "."); // '.' is a dummy char
            }
          }
          newLines.push(spMixin + line);
          // after a mixin line we need to reenter markdown.
          newLines.push(spMixin + ':marked');
          isAfterMarkdownTag = true;
        } else {
          if ((!isAfterMarkdownTag) || (line.trim().length > 0)) {
            newLines.push(sp + line);
            isAfterMarkdownTag = false;
          }
        }
      });
      if (isAfterMarkdownTag) {
        if (newLines.length > 0) {
          // if last line is a markdown tag remove it.
          newLines.pop();
        }
      }
      // force character to be a newLine.
      if (newLines.length > 0) newLines.push('');
      var res = newLines.join('\n');
      return res;
    }