update-section

0.3.3 • Public • Published

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

Package Sidebar

Install

npm i update-section

Weekly Downloads

57,540

Version

0.3.3

License

MIT

Last publish

Collaborators

  • thlorenz