update-section

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

npm install update-section
2 downloads in the last day
26 downloads in the last week
693 downloads in the last month

update-section build status

testling badge

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

npm loves you