开发者社区> 镜像站> NPM> update-section
update-section
Updates a section inside a file with newer content while removing the old content.
Last updated 7 years ago by thlorenz .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install update-section 
SYNC missed versions from official npm registry.

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

Current Tags

  • 0.3.3                                ...           latest (7 years ago)

8 Versions

  • 0.3.3                                ...           7 years ago
  • 0.3.2                                ...           7 years ago
  • 0.3.1                                ...           7 years ago
  • 0.3.0                                ...           7 years ago
  • 0.2.0                                ...           7 years ago
  • 0.1.2                                ...           7 years ago
  • 0.1.1                                ...           7 years ago
  • 0.1.0                                ...           7 years ago
Maintainers (1)
Downloads
Today 13
This Week 70
This Month 60
Last Day 22
Last Week 92
Last Month 391
Dependencies (0)
None
Dev Dependencies (1)