refactor(format) rm Util

This commit is contained in:
coderaiser 2014-06-26 02:57:16 -04:00
parent 1751bf8f14
commit cafa2191aa

View file

@ -1,158 +1,164 @@
(function() {
(function(scope) {
'use strict';
var DIR = '../',
Util = require(DIR + 'util');
exports.addSlashToEnd = function(path) {
var length, isSlash;
var Scope = scope.window ? window : global;
if (typeof module === 'object' && module.exports)
module.exports = new FormatProto();
else
Scope.Format = new FormatProto();
if (path) {
length = path.length - 1;
isSlash = path[length] === '/';
function FormatProto() {
this.addSlashToEnd = function(path) {
var length, isSlash;
if (!isSlash)
path += '/';
}
return path;
};
/** Функция получает короткие размеры
* конвертируя байт в килобайты, мегабойты,
* гигайбайты и терабайты
* @pSize - размер в байтах
*/
exports.size = function(size) {
var isNumber = Util.isNumber(size),
l1KB = 1024,
l1MB = l1KB * l1KB,
l1GB = l1MB * l1KB,
l1TB = l1GB * l1KB,
l1PB = l1TB * l1KB;
if (isNumber) {
if (size < l1KB) size = size + 'b';
else if (size < l1MB) size = (size/l1KB).toFixed(2) + 'kb';
else if (size < l1GB) size = (size/l1MB).toFixed(2) + 'mb';
else if (size < l1TB) size = (size/l1GB).toFixed(2) + 'gb';
else if (size < l1PB) size = (size/l1TB).toFixed(2) + 'tb';
else size = (size/l1PB).toFixed(2) + 'pb';
}
return size;
};
/**
* Функция переводит права из цыфрового вида в символьный
* @param perms - строка с правами доступа
* к файлу в 8-миричной системе
*/
exports.permissions = {
symbolic: function(perms) {
var type, owner, group, all,
permsStr = '',
permissions = '';
/*
S_IRUSR 0000400 protection: readable by owner
S_IWUSR 0000200 writable by owner
S_IXUSR 0000100 executable by owner
S_IRGRP 0000040 readable by group
S_IWGRP 0000020 writable by group
S_IXGRP 0000010 executable by group
S_IROTH 0000004 readable by all
S_IWOTH 0000002 writable by all
S_IXOTH 0000001 executable by all
*/
if (perms) {
permsStr = perms.toString();
/* тип файла */
type = permsStr.charAt(0);
if (path) {
length = path.length - 1;
isSlash = path[length] === '/';
switch (type - 0) {
case 1: /* обычный файл */
type='-';
break;
case 2: /* байт-ориентированное (символьное) устройство*/
type='c';
break;
case 4: /* каталог */
type='d';
break;
default:
type='-';
if (!isSlash)
path += '/';
}
return path;
};
/** Функция получает короткие размеры
* конвертируя байт в килобайты, мегабойты,
* гигайбайты и терабайты
* @pSize - размер в байтах
*/
this.size = function(size) {
var isNumber = typeof size === 'number',
l1KB = 1024,
l1MB = l1KB * l1KB,
l1GB = l1MB * l1KB,
l1TB = l1GB * l1KB,
l1PB = l1TB * l1KB;
if (isNumber) {
if (size < l1KB) size = size + 'b';
else if (size < l1MB) size = (size/l1KB).toFixed(2) + 'kb';
else if (size < l1GB) size = (size/l1MB).toFixed(2) + 'mb';
else if (size < l1TB) size = (size/l1GB).toFixed(2) + 'gb';
else if (size < l1PB) size = (size/l1TB).toFixed(2) + 'tb';
else size = (size/l1PB).toFixed(2) + 'pb';
}
return size;
};
/**
* Функция переводит права из цыфрового вида в символьный
* @param perms - строка с правами доступа
* к файлу в 8-миричной системе
*/
this.permissions = {
symbolic: function(perms) {
var type, owner, group, all,
permsStr = '',
permissions = '';
/*
S_IRUSR 0000400 protection: readable by owner
S_IWUSR 0000200 writable by owner
S_IXUSR 0000100 executable by owner
S_IRGRP 0000040 readable by group
S_IWGRP 0000020 writable by group
S_IXGRP 0000010 executable by group
S_IROTH 0000004 readable by all
S_IWOTH 0000002 writable by all
S_IXOTH 0000001 executable by all
*/
if (perms) {
permsStr = perms.toString();
/* тип файла */
type = permsStr.charAt(0);
switch (type - 0) {
case 1: /* обычный файл */
type='-';
break;
case 2: /* байт-ориентированное (символьное) устройство*/
type='c';
break;
case 4: /* каталог */
type='d';
break;
default:
type='-';
}
/* оставляем последние 3 символа*/
if (permsStr.length > 5)
permsStr = permsStr.substr(3);
else
permsStr = permsStr.substr(2);
/* Рекомендации гугла советуют вместо string[3]
* использовать string.charAt(3)
*/
/*
http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Standards_features#Standards_features
Always preferred over non-standards featuresFor
maximum portability and compatibility, always
prefer standards features over non-standards
features (e.g., string.charAt(3) over string[3]
and element access with DOM functions instead
of using an application-specific shorthand).
*/
/* Переводим в двоичную систему */
owner = (permsStr[0] - 0).toString(2),
group = (permsStr[1] - 0).toString(2),
all = (permsStr[2] - 0).toString(2),
/* переводим в символьную систему*/
permissions =
(owner[0] - 0 > 0 ? 'r' : '-') +
(owner[1] - 0 > 0 ? 'w' : '-') +
(owner[2] - 0 > 0 ? 'x' : '-') +
' ' +
(group[0] - 0 > 0 ? 'r' : '-') +
(group[1] - 0 > 0 ? 'w' : '-') +
(group[2] - 0 > 0 ? 'x' : '-') +
' ' +
(all[0]- 0 > 0 ? 'r' : '-') +
(all[1]- 0 > 0 ? 'w' : '-') +
(all[2]- 0 > 0 ? 'x' : '-');
}
/* оставляем последние 3 символа*/
if (permsStr.length > 5)
permsStr = permsStr.substr(3);
else
permsStr = permsStr.substr(2);
/* Рекомендации гугла советуют вместо string[3]
* использовать string.charAt(3)
*/
/*
http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?showone=Standards_features#Standards_features
Always preferred over non-standards featuresFor
maximum portability and compatibility, always
prefer standards features over non-standards
features (e.g., string.charAt(3) over string[3]
and element access with DOM functions instead
of using an application-specific shorthand).
*/
/* Переводим в двоичную систему */
owner = (permsStr[0] - 0).toString(2),
group = (permsStr[1] - 0).toString(2),
all = (permsStr[2] - 0).toString(2),
/* переводим в символьную систему*/
permissions =
(owner[0] - 0 > 0 ? 'r' : '-') +
(owner[1] - 0 > 0 ? 'w' : '-') +
(owner[2] - 0 > 0 ? 'x' : '-') +
' ' +
(group[0] - 0 > 0 ? 'r' : '-') +
(group[1] - 0 > 0 ? 'w' : '-') +
(group[2] - 0 > 0 ? 'x' : '-') +
' ' +
(all[0]- 0 > 0 ? 'r' : '-') +
(all[1]- 0 > 0 ? 'w' : '-') +
(all[2]- 0 > 0 ? 'x' : '-');
}
return permissions;
},
return permissions;
},
/**
* Функция конвертирует права доступа к файлам из символьного вида
* в цыфровой
*/
numeric: function(pPerm_s) {
var owner, group, all,
perms = pPerm_s,
length = perms && perms.length === 11;
if (length) {
owner = (pPerm_s[0] === 'r' ? 4 : 0) +
(pPerm_s[1] === 'w' ? 2 : 0) +
(pPerm_s[2] === 'x' ? 1 : 0),
/**
* Функция конвертирует права доступа к файлам из символьного вида
* в цыфровой
*/
numeric: function(perms) {
var owner, group, all,
length = perms && perms.length === 11;
if (length) {
owner = (perms[0] === 'r' ? 4 : 0) +
(perms[1] === 'w' ? 2 : 0) +
(perms[2] === 'x' ? 1 : 0),
group = (perms[4] === 'r' ? 4 : 0) +
(perms[5] === 'w' ? 2 : 0) +
(perms[6] === 'x' ? 1 : 0),
group = (pPerm_s[4] === 'r' ? 4 : 0) +
(pPerm_s[5] === 'w' ? 2 : 0) +
(pPerm_s[6] === 'x' ? 1 : 0),
all = (pPerm_s[8] === 'r' ? 4 : 0) +
(pPerm_s[9] === 'w' ? 2 : 0) +
(pPerm_s[10] === 'x' ? 1 : 0);
all = (perms[8] === 'r' ? 4 : 0) +
(perms[9] === 'w' ? 2 : 0) +
(perms[10] === 'x' ? 1 : 0);
/* добавляем 2 цифры до 5 */
perms = '00' + owner + group + all;
}
/* добавляем 2 цифры до 5 */
perms = '00' + owner + group + all;
return perms;
}
return perms;
}
};
}
})();
})(this);