<commit_before>(function() {
    'use strict';
    
    var fs          = require('fs'),
        
        ischanged   = require('ischanged'),
        Util        = require('util-io'),
        FILE        = '/etc/passwd',
        DARWIN      = process.platform === 'darwin',
        Names;
    
    module.exports = function(callback) {
        if (DARWIN)
            if (Names)
                callback(null, Names);
            else
                require('./darwin')(function(error, data) {
                    Names = data;
                    callback(error, data);
                });
        else
            ischanged(FILE, function(error, is) {
                if (error)
                    callback(error);
                else if (is || !Names)
                    read(callback);
                else
                    callback(null, Names);
             });
    };
    
    function read(callback) {
        fs.readFile(FILE, 'utf8', function(error, passwd) {
            if (!error)
                Names   = get(passwd);
            
            callback(error, Names);
        });
    }
    
    
    /** Функция парсит uid и имена пользователей
     * из переданного в строке вычитаного файла /etc/passwd
     * и возвращает массив обьектов имён и uid пользователей
     * @param passwd - строка, в которой находиться файл /etc/passwd
     */
    function get(passwd) {
        var uid, name,
            passwdArray = passwd.split('\n'),
            users   = {};
        
            passwdArray.forEach(function(line) {
                passwd = Util.rmStr(passwd, line);
                
                /* получаем первое слово строки */
                name = line.substr(line, line.indexOf(':'));
                line = Util.rmStr(line, name + ':x:');
                
                /* получаем uid */
                uid = line.substr(line, line.indexOf(':'));
                
                if (uid)
                    users[uid] = name;
            });
        
        return users;
    }
    
    function darwin(callback) {
        var CMD     = 'dscl . -list /Users UniqueID | sort -nk 2';
        
        spawnify(CMD, function(error, json) {
            var err,
                users = {};
            
            if (error)
                err = error;
            else if (json.stderr)
                err = {
                    message: json.stderr
                };
            else
                json.stdout
                    .split('\n')
                    .forEach(function(item) {
                        var data    = item.split(' '),
                            n       = data.length - 1,
                            id      = data[n],
                            name    = data[0];
                        
                        if (id)
                            users[id] = name;
                    });
            
            Names = users;
            callback(err, users);
        });
    }
})();<commit_msg>refactor(nicki) rm darwin<commit_after>(function() {
    'use strict';
    
    var fs          = require('fs'),
        
        ischanged   = require('ischanged'),
        Util        = require('util-io'),
        FILE        = '/etc/passwd',
        DARWIN      = process.platform === 'darwin',
        Names;
    
    module.exports = function(callback) {
        if (DARWIN)
            if (Names)
                callback(null, Names);
            else
                require('./darwin')(function(error, data) {
                    Names = data;
                    callback(error, data);
                });
        else
            ischanged(FILE, function(error, is) {
                if (error)
                    callback(error);
                else if (is || !Names)
                    read(callback);
                else
                    callback(null, Names);
             });
    };
    
    function read(callback) {
        fs.readFile(FILE, 'utf8', function(error, passwd) {
            if (!error)
                Names   = get(passwd);
            
            callback(error, Names);
        });
    }
    
    
    /** Функция парсит uid и имена пользователей
     * из переданного в строке вычитаного файла /etc/passwd
     * и возвращает массив обьектов имён и uid пользователей
     * @param passwd - строка, в которой находиться файл /etc/passwd
     */
    function get(passwd) {
        var uid, name,
            passwdArray = passwd.split('\n'),
            users   = {};
        
            passwdArray.forEach(function(line) {
                passwd = Util.rmStr(passwd, line);
                
                /* получаем первое слово строки */
                name = line.substr(line, line.indexOf(':'));
                line = Util.rmStr(line, name + ':x:');
                
                /* получаем uid */
                uid = line.substr(line, line.indexOf(':'));
                
                if (uid)
                    users[uid] = name;
            });
        
        return users;
    }
})();
{'fraction_non_alphanumeric': 0.11084624553039332, 'fraction_numerical': 0.0009932459276916965, 'mean_word_length': 1.0123900879296563, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2038124', 'n_tokens_mistral': 1363, 'n_tokens_neox': 1351, 'n_words': 293}