Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/thlorenz/update-section

Updates a section inside a file with newer content while removing the old content.
https://github.com/thlorenz/update-section

Last synced: 15 days ago
JSON representation

Updates a section inside a file with newer content while removing the old content.

Awesome Lists containing this project

README

        

# update-section [![build status](https://secure.travis-ci.org/thlorenz/update-section.png)](http://travis-ci.org/thlorenz/update-section)

[![testling badge](https://ci.testling.com/thlorenz/update-section.png)](https://ci.testling.com/thlorenz/update-section)

Updates a section inside a file with newer content while removing the old content.

```js
var updateSection = require('update-section');

var original = [
'# Some Project'
, ''
, 'Does a bunch of things'
, ''
, 'START -- GENERATED GOODNESS'
, 'this was painstakingly generated'
, 'as was this'
, 'END -- GENERATED GOODNESS' , ''
, ''
, '## The End'
, ''
, 'Til next time'
].join('\n');

var update = [
'START -- GENERATED GOODNESS'
, 'this was painstakingly re-generated'
, 'and we added another line'
, 'here'
, 'END -- GENERATED GOODNESS'
].join('\n');

function matchesStart(line) {
return (/START -- GENERATED GOODNESS/).test(line);
}

function matchesEnd(line) {
return (/END -- GENERATED GOODNESS/).test(line);
}

var updated = updateSection(original, update, matchesStart, matchesEnd);
console.log(updated);
```

#### Output
```
# Some Project

Does a bunch of things

START -- GENERATED GOODNESS
this was painstakingly re-generated
and we added another line
here
END -- GENERATED GOODNESS

## The End

Til next time
```

## Installation

npm install update-section

## API

### updateSection(content, section, matchesStart, matchesEnd)

```
/**
* Updates the content with the given section.
*
* If previous section is found it is replaced.
* Otherwise the section is appended to the end of the content.
*
* @name updateSection
* @function
* @param {String} content that may or may not include a previously added section
* @param {String} section the section to update
* @param {Function} matchesStart when called with a line needs to return true iff it is the section start line
* @param {Function} matchesEnd when called with a line needs to return true iff it is the section end line
* @return {String} content with updated section
*/
```

## License

MIT









updateSection(content, section, matchesStart, matchesEnd, top) → {String}





Updates the content with the given section.


If previous section is found it is replaced.
Otherwise the section is appended to the end of the content.



Parameters:

Name
Type
Description

content

String

that may or may not include a previously added section

section

String

the section to update

matchesStart

function

when called with a line needs to return true iff it is the section start line

matchesEnd

function

when called with a line needs to return true iff it is the section end line

top

boolean

forces the section to be added at the top of the content if a replacement couldn't be made


Source:



Returns:


content with updated section





Type


String





updateSection::parse(lines, matchesStart, matchesEnd) → {object}





Finds the start and end lines that match the given criteria.
Used by update-section itself.


Use it if you need to get information about where the matching content is located.



Parameters:

Name
Type
Description

lines

Array.<string>

the lines in which to look for matches

matchesStart

function

when called with a line needs to return true iff it is the section start line

matchesEnd

function

when called with a line needs to return true iff it is the section end line


Source:



Returns:


with the following properties: hasStart, hasEnd, startIdx, endIdx





Type


object



*generated with [docme](https://github.com/thlorenz/docme)*