dmi3y/csslint-cli

View on GitHub
lib/rc.js

Summary

Maintainability
A
2 hrs
Test Coverage
/*
 * csslint-cli
 * user/repo
 *
 * Copyright (c) 2014 Dmitry Lapshukov
 * Licensed under the MIT license.
 */

'use strict';

var
    v = require('./validators'),
    fu = require('nfsu');

module.exports = {

    shuffleToRulesets: function (rcs, files) {
        var
            file,
            _files,
            base,
            len,
            rulesets = {},
            i,
            j;

        len = rcs.length;

        rcs.sort(function(a, b){
            return a.ord > b.ord;
        });

        for (i = 0; i < len; i += 1) {
            base = rcs[i].base;

            _files = [];

            for (j = 0; files[j]; j += 1) {
                file = files[j];

                if ( file.indexOf(base) === 0 ) {
                    _files.push(files.splice(j, 1).pop());
                    j -= 1;
                }

            }
            /* istanbul ignore else  */
            if ( _files.length ) {
                rulesets[base] = {};
                rulesets[base].files = _files;
                rulesets[base].rules = rcs[i].rules;
            }
        }

        return {
            rulesets: rulesets,
            files: files
        };
    },

    sortTheRest: function (files, rcname) {
        var
            i,
            file,
            base,
            _base,
            rulesets = {},
            rcfile;

        files.sort();

        for (i = 0; files[i]; i += 1) {
            file = fu.p.resolve(files[i]);
            base = fu.p.dirname(file);
            /* istanbul ignore else  */
            if ( base.indexOf(_base) !== 0 ) {
                _base = base;
                rulesets[_base] = {};
                rcfile = fu.lookupFileByName(rcname, _base);
                rulesets[_base].files = [];
                rulesets[_base].rules = rcfile? v.validateRc(rcfile): {};
            }

            rulesets[_base].files.push(file);
        }

        return rulesets;
    }
};