mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 'use strict';
 | |
| 
 | |
| var _ = require('lodash'),
 | |
|     docdown = require('docdown'),
 | |
|     fs = require('fs-extra'),
 | |
|     path = require('path');
 | |
| 
 | |
| var util = require('../common/util');
 | |
| 
 | |
| var basePath = path.join(__dirname, '..', '..'),
 | |
|     docPath = path.join(basePath, 'doc'),
 | |
|     readmePath = path.join(docPath, 'README.md');
 | |
| 
 | |
| var pkg = require('../../package.json'),
 | |
|     version = pkg.version;
 | |
| 
 | |
| var config = {
 | |
|   'base': {
 | |
|     'path': path.join(basePath, 'lodash.js'),
 | |
|     'title': '<a href="https://lodash.com/">lodash</a> <span>v' + version + '</span>',
 | |
|     'toc': 'categories',
 | |
|     'url': 'https://github.com/lodash/lodash/blob/' + version + '/lodash.js'
 | |
|   },
 | |
|   'github': {
 | |
|     'style': 'github',
 | |
|     'sublinks': [npmLink('Ⓝ', 'See the npm package')]
 | |
|   },
 | |
|   'site': {
 | |
|     'entryLink': '<a href="${entryHref}" class="fa fa-link"></a>',
 | |
|     'sourceLink': '[source](${sourceHref})',
 | |
|     'tocHref': '',
 | |
|     'tocLink': '',
 | |
|     'sublinks': [npmLink('npm package')]
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Composes a npm link from `text` and optional `title`.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {string} text The link text.
 | |
|  * @param {string} [title] The link title.
 | |
|  * @returns {string} Returns the composed npm link.
 | |
|  */
 | |
| function npmLink(text, title) {
 | |
|   return (
 | |
|     '<% if (name == "templateSettings" || !/^(?:methods|properties|seq)$/i.test(category)) {' +
 | |
|       'print(' +
 | |
|         '"[' + text + '](https://www.npmjs.com/package/lodash." + name.toLowerCase() + ' +
 | |
|         '"' + (title == null ? '' : ' \\"' + title + '\\"') + ')"' +
 | |
|       ');' +
 | |
|     '} %>'
 | |
|   );
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * Post-process `markdown` to make adjustments.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {string} markdown The markdown to process.
 | |
|  * @returns {string} Returns the processed markdown.
 | |
|  */
 | |
| function postprocess(markdown) {
 | |
|   // Wrap symbol property identifiers in brackets.
 | |
|   return markdown.replace(/\.(Symbol\.(?:[a-z]+[A-Z]?)+)/g, '[$1]');
 | |
| }
 | |
| 
 | |
| /*----------------------------------------------------------------------------*/
 | |
| 
 | |
| /**
 | |
|  * Creates the documentation markdown formatted for 'github' or 'site'.
 | |
|  *
 | |
|  * @private
 | |
|  * @param {string} type The format type.
 | |
|  */
 | |
| function build(type) {
 | |
|   var options = _.defaults({}, config.base, config[type]),
 | |
|       markdown = docdown(options);
 | |
| 
 | |
|   fs.writeFile(readmePath, postprocess(markdown), util.pitch);
 | |
| }
 | |
| 
 | |
| build(_.last(process.argv));
 |