# API documentation ## readme-generator : object From: `@hperchec/readme-generator@3.1.0` **Example** ```js const readmeGenerator = require('@hperchec/readme-generator') ``` * [readme-generator](#module_readme-generator) : object * _static_ * [.generate](#module_readme-generator.generate) ⇒ void \| Promise.<void> * [.render](#module_readme-generator.render) ⇒ string \| Promise.<string> * [.processConfig](#module_readme-generator.processConfig) ⇒ Configuration \| Promise.<Configuration> * [.defaultConfig](#module_readme-generator.defaultConfig) : Configuration * [.defaultEjsData](#module_readme-generator.defaultEjsData) : object * [.$config](#module_readme-generator.defaultEjsData.$config) : Configuration * [.$utils](#module_readme-generator.defaultEjsData.$utils) : object * _inner_ * [~Configuration](#module_readme-generator..Configuration) : object ### readmeGenerator.generate ⇒ void \| Promise.<void> Writes rendered README markdown to file **Returns**: void \| Promise.<void> - Promise is immediately resolved except if a module is async. **Throws**: - Throws error if render or file writing fails | Param | Type | Description | | --- | --- | --- | | config | Configuration \| string | The config object to process. Can be path to config file as string. | | [options] | object | Options object | | [options.data] | object | Additionnal data object to merge with default EJS data | **Example** ```js readmeGenerator.generate(config) // => output to README.md file readmeGenerator.generate('./.docs/readme/config.js') // pass config path readmeGenerator.generate(config, { data: { foo: 'bar' } }) // pass options // Async await readmeGenerator.generate('./.docs/readme/config.js') // async module await readmeGenerator.generate({ ejsDataPath: '/path/to/ejs/data.js' // async module }) ``` ### readmeGenerator.render ⇒ string \| Promise.<string> Render README markdown **Returns**: string \| Promise.<string> - Returns the rendered markdown as string. Promise is immediately resolved except if a module is async. | Param | Type | Description | | --- | --- | --- | | config | Configuration \| string | Same as generate config but `fileName` and `destFolder` option are just ignored | | [options] | object | Same as generate | **Example** ```js const result = readmeGenerator.render(config) const result = readmeGenerator.render('./.docs/readme/config.js') const result = readmeGenerator.render(config, { data: { foo: 'bar' } }) // Async const result = await readmeGenerator.render('./.docs/readme/config.js') // async module const result = await readmeGenerator.render({ ejsDataPath: '/path/to/ejs/data.js' // async module }) ``` ### readmeGenerator.processConfig ⇒ Configuration \| Promise.<Configuration> Takes a custom config as unique parameter and merges it with the default configuration object. **Returns**: Configuration \| Promise.<Configuration> - Returns the processed configuration. Promise is immediately resolved except if module is async. | Param | Type | Description | | --- | --- | --- | | config | Configuration \| string | The config object to process. Can be path to config file as string. | **Example** ```js readmeGenerator.processConfig({ ... }) // pass object readmeGenerator.processConfig('./.docs/readme/config.js') // pass path as string // If module.exports is a promise await readmeGenerator.processConfig('./.docs/readme/config.js') // async module ``` ### readmeGenerator.defaultConfig : Configuration Returns the default configuration object. This base configuration is used by `processConfig` method and so `generate` and `render` methods. See also [Configuration](#module_readme-generator..Configuration) defaults. ### readmeGenerator.defaultEjsData : object Returns the default EJS data object. This base EJS data object is used by `render` methods and merged with user provided EJS data. * [.defaultEjsData](#module_readme-generator.defaultEjsData) : object * [.$config](#module_readme-generator.defaultEjsData.$config) : Configuration * [.$utils](#module_readme-generator.defaultEjsData.$utils) : object #### defaultEjsData.$config : Configuration Contains the default configuration by default. Will be merged with custom configuration when using `generate` or `render` method. **Example** ```js // Access configuration $config.fileName // => README.md ``` #### defaultEjsData.$utils : object Contains the following methods: - `table`: generates a markdown table - `asciiTree`: generates an "ASCII" tree - ... all methods from `markdown-utils` package > Please check the following package documentations: > - [markdown-utils](https://github.com/jonschlinkert/markdown-utils) > - [markdown-table](https://www.npmjs.com/package/markdown-table) (⚠ v1.1.3) > - [ascii-tree](https://www.npmjs.com/package/ascii-tree) **Example** ```js // Generates a blockquote $utils.blockquote('This is a blockquote') // Generates a table $utils.table([ [ 'Column 1', 'Column 2' ], [ 'Value 1', 'Value 2' ] ]) // Generates an ascii tree $utils.asciiTree('*.\n**a\n**b\n*...') ``` ### readme-generator~Configuration : object Configuration object definition **Properties** | Name | Type | Description | | --- | --- | --- | | [fileName] | string | Output file name: `README.md` by default. Only for **generate** method | | [destFolder] | string | Output path, default is `process.cwd` (project root). Only for **generate** method | | [templatePath] | string | Template path: default is `.docs/readme/template.md` | | [ejsDataPath] | string | Path to EJS data file: default is `.docs/readme/data.js`. If null, no file will be required | | [ejsOptions] | object | EJS options: see also [EJS documentation](https://www.npmjs.com/package/ejs#options). | | [ejsOptions.root] | Array.<string> | The path of template folder is automatically included. | | [ejsOptions.views] | Array.<string> | The path of template folder and the path of internal partials are automatically included. | | [appendAutoGenMessage] | boolean | If true, append "don't edit" message to rendered markdown. Default is **true**. | | [autoToc] | boolean | If true, parse `` special comment to automatically inject generated table of contents. Default is **true**. The `markdown-toc` package is used for this feature, check the [documentation](https://www.npmjs.com/package/markdown-toc). | | [slugify] | function | If provided, will be used by `markdown-toc` to slugify headings id. Default uses `github-slugger` (⚠ v1.5.0): see [**slug** method documentation](https://github.com/Flet/github-slugger#usage). |