Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.04.2013, 23:18
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Функция для перевода размера из байтов в понятный для человека формат
/**
 * Возвращает размер в байтах в понятном для человека формате.
 *
 * @author [email]tz4678@gmail.com[/email]
 * @param size размер в байтах, целое число
 * @param std стандарт, 'SI' | 'IEC'
 * @return string
 */
function formatSize(size, std) {
    if (std) std = std.toLowerCase();
    var i = 0, 
        base = std == 'si' ? 1000 : 1024, 
        prefixes = ' KMGTPEZY';
    
    if (size < 1) {
        return 0;
    }
    else if (size >= base) {
        i = Math.floor( Math.log(size) / Math.log(base) );
        if (i >= prefixes.length) return 'N/A';
        size = ( size / Math.pow(base, i) ).toFixed(2) * 1 + ' ';
    }
    
    return size + prefixes[i] + ( std == 'iec' && i ? 'i' : '' ) + 'B';
}


Примеры:

formatSize(1234567890)
"1.15 GB"
formatSize(1234567890, 'iec')
"1.15 GiB"
formatSize(1234567890, 'si')
"1.23 GB"

Последний раз редактировалось Антон Крамолов, 04.04.2013 в 23:21.
Ответить с цитированием
  #2 (permalink)  
Старый 05.04.2013, 14:44
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Тож моё

function pluralize(count, base, ending1, ending2, ending3) { if (ending3 === undefined) { base += count == 1? ending1 : ending2; } else { var _ = count % 100 > 20 ? count % 10 : count; base += _ == 0 || _ > 4 ? ending3 : _ > 1 ? ending2 : ending1; } return count + ' ' + base; }
undefined
pluralize(0, 'comment', '', 's')
"0 comments"
pluralize(1, 'comment', '', 's')
"1 comment"
pluralize(3, 'comment', '', 's')
"3 comments"
pluralize(1, 'wol', 'f', 'ves')
"1 wolf"
pluralize(2, 'wol', 'f', 'ves')
"2 wolves"
pluralize(1, 'волк', '', 'а', 'ов') + ' и ' + pluralize(7, 'козл', 'енок', 'енка', 'ят')
"1 волк и 7 козлят"
pluralize(1, 'робот', '', 'а', 'ов')
"1 робот"
pluralize(113, 'робот', '', 'а', 'ов')
"113 роботов"
pluralize(244, 'робот', '', 'а', 'ов')
"244 робота"
pluralize(576, 'робот', '', 'а', 'ов')
"576 роботов"
Ответить с цитированием
  #3 (permalink)  
Старый 05.04.2013, 15:38
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

/**
 * Склоняет слово в зависимости от количества.
 * 
 * @param count количество
 * @param base основа слова
 * @param ending1 окончание для ед.ч.
 * @param ending2 окончание для мн.ч.
 * @param ending3 еще одно окончание для мн.ч., если не задано, то слово 
 * склоняется как в английском
 * @return string
 */
function pluralize(count, base, ending1, ending2, ending3) { 
    base = count + ' ' + base;
    
    if (ending3 === undefined) { 
        return base + ( count == 1? ending1 : ending2 ); 
    }
    
    count = count % 100;
    count = count > 20 ? count % 10 : count; 
    return base + ( count == 0 || count > 4 ? ending3 : count > 1 ? ending2 : ending1 ); 
}

var i = 99;

while (i) {
    var qt = pluralize(i, 'бутыл', 'ка', 'ки', 'ок');
    console.log( qt + ' пива на стене\n' + qt + ' бутылок пива!\nВозьми одну, пусти по кругу\n' + pluralize(--i, 'бутыл', 'ка', 'ки', 'ок') + ' пива на стене!\n\n');
}


99 бутылок пива на стене
99 бутылок бутылок пива!
Возьми одну, пусти по кругу
98 бутылок пива на стене!

98 бутылок пива на стене
98 бутылок бутылок пива!
Возьми одну, пусти по кругу
97 бутылок пива на стене!

97 бутылок пива на стене
97 бутылок бутылок пива!
Возьми одну, пусти по кругу
96 бутылок пива на стене!

96 бутылок пива на стене
96 бутылок бутылок пива!
Возьми одну, пусти по кругу
95 бутылок пива на стене!

95 бутылок пива на стене
95 бутылок бутылок пива!
Возьми одну, пусти по кругу
94 бутылки пива на стене!

94 бутылки пива на стене
94 бутылки бутылок пива!
Возьми одну, пусти по кругу
93 бутылки пива на стене!

93 бутылки пива на стене
93 бутылки бутылок пива!
Возьми одну, пусти по кругу
92 бутылки пива на стене!

92 бутылки пива на стене
92 бутылки бутылок пива!
Возьми одну, пусти по кругу
91 бутылка пива на стене!

91 бутылка пива на стене
91 бутылка бутылок пива!
Возьми одну, пусти по кругу
90 бутылок пива на стене!

90 бутылок пива на стене
90 бутылок бутылок пива!
Возьми одну, пусти по кругу
89 бутылок пива на стене!

89 бутылок пива на стене
89 бутылок бутылок пива!
Возьми одну, пусти по кругу
88 бутылок пива на стене!

88 бутылок пива на стене
88 бутылок бутылок пива!
Возьми одну, пусти по кругу
87 бутылок пива на стене!

87 бутылок пива на стене
87 бутылок бутылок пива!
Возьми одну, пусти по кругу
86 бутылок пива на стене!

86 бутылок пива на стене
86 бутылок бутылок пива!
Возьми одну, пусти по кругу
85 бутылок пива на стене!

85 бутылок пива на стене
85 бутылок бутылок пива!
Возьми одну, пусти по кругу
84 бутылки пива на стене!

84 бутылки пива на стене
84 бутылки бутылок пива!
Возьми одну, пусти по кругу
83 бутылки пива на стене!

83 бутылки пива на стене
83 бутылки бутылок пива!
Возьми одну, пусти по кругу
82 бутылки пива на стене!

82 бутылки пива на стене
82 бутылки бутылок пива!
Возьми одну, пусти по кругу
81 бутылка пива на стене!

81 бутылка пива на стене
81 бутылка бутылок пива!
Возьми одну, пусти по кругу
80 бутылок пива на стене!

80 бутылок пива на стене
80 бутылок бутылок пива!
Возьми одну, пусти по кругу
79 бутылок пива на стене!

79 бутылок пива на стене
79 бутылок бутылок пива!
Возьми одну, пусти по кругу
78 бутылок пива на стене!

78 бутылок пива на стене
78 бутылок бутылок пива!
Возьми одну, пусти по кругу
77 бутылок пива на стене!

77 бутылок пива на стене
77 бутылок бутылок пива!
Возьми одну, пусти по кругу
76 бутылок пива на стене!

76 бутылок пива на стене
76 бутылок бутылок пива!
Возьми одну, пусти по кругу
75 бутылок пива на стене!

75 бутылок пива на стене
75 бутылок бутылок пива!
Возьми одну, пусти по кругу
74 бутылки пива на стене!

74 бутылки пива на стене
74 бутылки бутылок пива!
Возьми одну, пусти по кругу
73 бутылки пива на стене!

73 бутылки пива на стене
73 бутылки бутылок пива!
Возьми одну, пусти по кругу
72 бутылки пива на стене!

72 бутылки пива на стене
72 бутылки бутылок пива!
Возьми одну, пусти по кругу
71 бутылка пива на стене!

71 бутылка пива на стене
71 бутылка бутылок пива!
Возьми одну, пусти по кругу
70 бутылок пива на стене!

70 бутылок пива на стене
70 бутылок бутылок пива!
Возьми одну, пусти по кругу
69 бутылок пива на стене!

69 бутылок пива на стене
69 бутылок бутылок пива!
Возьми одну, пусти по кругу
68 бутылок пива на стене!

68 бутылок пива на стене
68 бутылок бутылок пива!
Возьми одну, пусти по кругу
67 бутылок пива на стене!

67 бутылок пива на стене
67 бутылок бутылок пива!
Возьми одну, пусти по кругу
66 бутылок пива на стене!

66 бутылок пива на стене
66 бутылок бутылок пива!
Возьми одну, пусти по кругу
65 бутылок пива на стене!

65 бутылок пива на стене
65 бутылок бутылок пива!
Возьми одну, пусти по кругу
64 бутылки пива на стене!

64 бутылки пива на стене
64 бутылки бутылок пива!
Возьми одну, пусти по кругу
63 бутылки пива на стене!

63 бутылки пива на стене
63 бутылки бутылок пива!
Возьми одну, пусти по кругу
62 бутылки пива на стене!

62 бутылки пива на стене
62 бутылки бутылок пива!
Возьми одну, пусти по кругу
61 бутылка пива на стене!

61 бутылка пива на стене
61 бутылка бутылок пива!
Возьми одну, пусти по кругу
60 бутылок пива на стене!

60 бутылок пива на стене
60 бутылок бутылок пива!
Возьми одну, пусти по кругу
59 бутылок пива на стене!

59 бутылок пива на стене
59 бутылок бутылок пива!
Возьми одну, пусти по кругу
58 бутылок пива на стене!

58 бутылок пива на стене
58 бутылок бутылок пива!
Возьми одну, пусти по кругу
57 бутылок пива на стене!

57 бутылок пива на стене
57 бутылок бутылок пива!
Возьми одну, пусти по кругу
56 бутылок пива на стене!

56 бутылок пива на стене
56 бутылок бутылок пива!
Возьми одну, пусти по кругу
55 бутылок пива на стене!

55 бутылок пива на стене
55 бутылок бутылок пива!
Возьми одну, пусти по кругу
54 бутылки пива на стене!

54 бутылки пива на стене
54 бутылки бутылок пива!
Возьми одну, пусти по кругу
53 бутылки пива на стене!

53 бутылки пива на стене
53 бутылки бутылок пива!
Возьми одну, пусти по кругу
52 бутылки пива на стене!

52 бутылки пива на стене
52 бутылки бутылок пива!
Возьми одну, пусти по кругу
51 бутылка пива на стене!

51 бутылка пива на стене
51 бутылка бутылок пива!
Возьми одну, пусти по кругу
50 бутылок пива на стене!

50 бутылок пива на стене
50 бутылок бутылок пива!
Возьми одну, пусти по кругу
49 бутылок пива на стене!

49 бутылок пива на стене
49 бутылок бутылок пива!
Возьми одну, пусти по кругу
48 бутылок пива на стене!

48 бутылок пива на стене
48 бутылок бутылок пива!
Возьми одну, пусти по кругу
47 бутылок пива на стене!

47 бутылок пива на стене
47 бутылок бутылок пива!
Возьми одну, пусти по кругу
46 бутылок пива на стене!

46 бутылок пива на стене
46 бутылок бутылок пива!
Возьми одну, пусти по кругу
45 бутылок пива на стене!

45 бутылок пива на стене
45 бутылок бутылок пива!
Возьми одну, пусти по кругу
44 бутылки пива на стене!

44 бутылки пива на стене
44 бутылки бутылок пива!
Возьми одну, пусти по кругу
43 бутылки пива на стене!

43 бутылки пива на стене
43 бутылки бутылок пива!
Возьми одну, пусти по кругу
42 бутылки пива на стене!

42 бутылки пива на стене
42 бутылки бутылок пива!
Возьми одну, пусти по кругу
41 бутылка пива на стене!

...

5 бутылок пива на стене
5 бутылок бутылок пива!
Возьми одну, пусти по кругу
4 бутылки пива на стене!

4 бутылки пива на стене
4 бутылки бутылок пива!
Возьми одну, пусти по кругу
3 бутылки пива на стене!

3 бутылки пива на стене
3 бутылки бутылок пива!
Возьми одну, пусти по кругу
2 бутылки пива на стене!

2 бутылки пива на стене
2 бутылки бутылок пива!
Возьми одну, пусти по кругу
1 бутылка пива на стене!

1 бутылка пива на стене
1 бутылка бутылок пива!
Возьми одну, пусти по кругу
0 бутылок пива на стене!
Ответить с цитированием
  #4 (permalink)  
Старый 05.04.2013, 16:40
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

function timeRemaining(ms) { 
    var year = 365.25, 
        day = 24, 
        hour = 60, 
        minute = hour, 
        second = 1000, 
        years = ms / ( year * day * hour * minute * second ), 
        days = years % 1 * year, hours = days % 1 * day,
        minutes = hours % 1 * hour, 
        seconds = minutes % 1 * minute; 
   return ( years >= 1 
       ? pluralize( Math.floor(years), '', 'год', 'года', 'лет' ) 
       + ' ' : '' ) + ( days >= 1 
       ? pluralize( Math.floor(days), 'д', 'ень', 'ня', 'ней' ) 
       + ' ' : '' ) + ( hours >= 1 
       ? pluralize( Math.floor(hours), 'час', '', 'а', 'ов' ) + ' ' : '' ) 
       + ( minutes >= 1 
       ? pluralize( Math.floor(minutes), 'минут', 'у', 'ы', '' ) + ' ' : '' ) 
       + pluralize( Math.round(seconds), 'секунд', 'у', 'ы', '' ); 
}


<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta charset="utf-8">
        <script src="js/common.js"></script>        
    </head>
    <body style="font: 14px/1.5em Arial">   
        Скачивание начнется через <span id="remaining"></span>
    </body>
    <script>
        var remaining = document.getElementById('remaining'),
            time = 150000, 
            step = 999,
            interval = setInterval(function() {
                if (time < 0) {
                    alert('Время вышло');
                    return clearInterval(interval);
                }
                
                remaining.innerHTML = timeRemaining(time);
                time -= step;
            }, step);              
        remaining.innerHTML = timeRemaining(time);
    </script>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 05.04.2013, 16:42
Профессор
Посмотреть профиль Найти все сообщения от Антон Крамолов
 
Регистрация: 11.04.2012
Сообщений: 255

Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск