docs: function illuminate(source, options) {
  
      // Merge defaults and passed options
      var config = assign({}, defaults, options);
  
      // Set up simple syntax higlighting if requested
      if (config.syntax) {
          config.highlight = function(code) {
              return highlight.highlightAuto(code).value;
          };
      }
  
      // Pass options along to the default render (for xtml and santize support)
      config.renderer = options.renderer || new Renderer(config);
  
      // Extract the first heading to use as a title.
      var title;
      var renderHeading = config.renderer.heading;
      config.renderer.heading = function(text, level) {
          if (!title) title = text;
          return renderHeading.apply(this, arguments);
      };
      markdown.options(config);
  
      // Use dox to extract the Markdown from comments.
      var comments = dox.parseComments(source, {
          raw: true,
          skipSingleStar: true
      });
  
      // Concatenate the Markdown in the comments
      var text = comments.map(function(comment) {
          return comment.description.full;
      }).join('\n\n');
  
      // Process it as HTML (also extract the `title` property)
      var html = markdown(text);
  
      // Set body to be either Markdown (default) or processed HTML.
      var body = config.html ? html : text;
  
      // Return body, or JSON with title, body, and comments (from dox)
      if (config.json) {
          return {
              title: title,
              body: body,
              comments: comments
          };
      }
      else {
          return body;
      }
  }