diff --git a/lib/server/format.js b/lib/server/format.js index 4bb0003e..4b6c5983 100644 --- a/lib/server/format.js +++ b/lib/server/format.js @@ -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);