line merge
This kind of weird lib was created for a kind of weird reason. I needed to merge what are essentially list files -- files that have one list item per line. Namely, files like .gitignore
. This module will merge the contents of such files, resulting in a unique list of item (duplicated will be removed), and it will do its best to preserve comments and new lines.
Install
npm install line-merge
Use
The main function you will care about is the merge
function.
merge({String} str, ...)
→ {String}
Takes any number of strings, and merges all the unique lines in each, resulting in a single string containing all lines from the input strings. It will merge all strings passed into the method in order.
var fs = ;var lines = ; var file1 = fs;var file2 = fs;var file3 = fs; var merged = lines; fs;
You can also access the internals:
tokenize({String} str)
→ {Array}
Tokenize a single list string into an array.
var tokens = lines;// [{ line: 'pineapples' }, { line: 'cherries' }]
Comments are determined as lines that start with #
.
var tokens = lines;// [{ line: 'pineapples', comments: ['# fruits'] }, { line: 'cherries' }]
serialize({Array} arr)
→ {String}
Serialize a tokenized array into a list string.
var output = lines;// 'pineapples\ncherries\n'
Note that the output will always end in a new line.
mergeRaw({Array} arr, ...)
→ {Array}
Merges the underlying tokenized array representation of the list files. It will merge all arrays passed into the method in order.
var tokens = lines; // [{ line: 'pineapples' }, { line: 'apples', comments: ['# not the company'] }, { line: 'cherries' }]