line-merge

    0.0.3 • Public • Published

    line merge

    Build Test Coverage Code Climate Downloads Version Dependency Status

    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 = require('fs');
    var lines = require('line-merge');
     
    var file1 = fs.readFileSync('location/to/one/.gitignore', 'utf8');
    var file2 = fs.readFileSync('location/to/two/.gitignore', 'utf8');
    var file3 = fs.readFileSync('location/to/three/.gitignore', 'utf8');
     
    var merged = lines.merge(file1, file2, file3);
     
    fs.writeFileSync('location/to/merged/.gitingore', merged);

    You can also access the internals:

    tokenize({String} str){Array}

    Tokenize a single list string into an array.

    var tokens = lines.tokenize('pineapples\ncherries');
    // [{ line: 'pineapples' }, { line: 'cherries' }]

    Comments are determined as lines that start with #.

    var tokens = lines.tokenize('# fruits\npineapples\ncherries');
    // [{ line: 'pineapples', comments: ['# fruits'] }, { line: 'cherries' }]

    serialize({Array} arr){String}

    Serialize a tokenized array into a list string.

    var output = lines.serialize([
        { line: 'pineapples' },
        { line: 'cherries' }
    ]);
    // '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.mergeRaw(
        [{ line: 'pineapples' }, { line: 'apples' }],
        [{ line: 'cherries' }, { line: 'apples', comments: ['# not the company'] }]
    );
     
    // [{ line: 'pineapples' }, { line: 'apples', comments: ['# not the company'] }, { line: 'cherries' }]

    Install

    npm i line-merge

    DownloadsWeekly Downloads

    0

    Version

    0.0.3

    License

    ISC

    Last publish

    Collaborators

    • kirilv