update-section
Updates a section inside a file with newer content while removing the old content.
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