Class: StTools::Human
- Inherits:
-
Object
- Object
- StTools::Human
- Defined in:
- lib/st_tools/human.rb
Class Method Summary collapse
-
.bytes(val) ⇒ String
Метод форматирует число, добавляя суффиксы ‘кбайт’, ‘Мбайт’ и др.
-
.format_time(time, what, type) ⇒ String
Метод переводит DateTime в строку на русском или иных языках.
-
.format_time2(timestamp, date, time, god: true) ⇒ String
Метод переводит DateTime в строку на русском или иных языках.
-
.human_ago(time, ago = true) ⇒ String
Метод переводит DateTime в строку на русском или иных языках вида “4 дня 23 часа назад”.
-
.memory ⇒ String
Метод возвращает форматированную строку с объемом памяти, занимаемым текущим процессом (pid).
-
.number(val) ⇒ String
Метод форматирует число, добавляя суффиксы ‘тыс.’, ‘млн.’ и пр.
-
.pretty_number(value, round: 0, nobr: false, strong: false) ⇒ String
Метод оформляет число красивым способом, в виде “1 456 742,34”.
-
.seconds_ago(secs, ago = true) ⇒ String
Метод принимает параметр - количество секунд между двумя любыми событиями в секундах, и переводит их в строку на русском или иных языках вида “4 дня 23 часа назад”.
Class Method Details
.bytes(val) ⇒ String
Метод форматирует число, добавляя суффиксы ‘кбайт’, ‘Мбайт’ и др. Предварительно необходимо вызвать StTools.configure { |config| config.locale = :ru }.
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/st_tools/human.rb', line 37 def self.bytes(val) # noinspection RubyStringKeysInHashInspection StTools.configuration.bytes_array.each_pair do |e, s| if val < s if s <= 1024*1024 return "#{(val.to_f / (s / 1024)).round(0)} #{e}" else return "#{(val.to_f / (s / 1024)).round(1)} #{e}" end end end end |
.format_time(time, what, type) ⇒ String
Метод переводит DateTime в строку на русском или иных языках. Предварительно необходимо вызвать StTools.configure { |config| config.locale = :ru (или :en) }.
DEPRECATED
124 125 126 127 128 129 130 |
# File 'lib/st_tools/human.rb', line 124 def self.format_time(time, what, type) unless [:full, :date, :time].include?(what) warn "WARNING: what ':#{what.to_s}' must be in [:full, :date, :time]. Use ':full' now (at line #{__LINE__} of StTools::#{File.basename(__FILE__)})" what = :full end return I18n.l(time, :format => "#{what.to_s}_#{type.to_s}".to_sym, locale: StTools.configuration.locale) end |
.format_time2(timestamp, date, time, god: true) ⇒ String
Метод переводит DateTime в строку на русском или иных языках. Предварительно необходимо вызвать StTools.configure { |config| config.locale = :ru (или :en) }.
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/st_tools/human.rb', line 157 def self.format_time2(, date, time, god: true) unless [:human, :full, :short, :none].include?(date) warn "WARNING: date ':#{date.to_s}' must be in [:human, :full, :short, :none]. Use ':human' now (at line #{__LINE__} of StTools::#{File.basename(__FILE__)})" date = :human end unless [:full, :short, :none].include?(time) warn "WARNING: time ':#{time.to_s}' must be in [:full, :short, :none]. Use ':full' now (at line #{__LINE__} of StTools::#{File.basename(__FILE__)})" time = :full end case when date == :none && time == :none "" when date != :none && time == :none StTools::Human.format_time2_date(, date, god) when date != :none && time != :none "#{StTools::Human.format_time2_date(, date, god)} #{StTools::Human.format_time2_time(, time)}" when date == :none && time != :none StTools::Human.format_time2_time(, time) else "" end end |
.human_ago(time, ago = true) ⇒ String
Метод переводит DateTime в строку на русском или иных языках вида “4 дня 23 часа назад”. Предварительно необходимо вызвать StTools.configure { |config| config.locale = :ru }.
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/st_tools/human.rb', line 69 def self.human_ago(time, ago = true) now = self.to_time(Time.now.strftime('%Y-%m-%d %H:%M:%S UTC')) slf = self.to_time(time.strftime('%Y-%m-%d %H:%M:%S UTC')) secs = (now - slf).to_i return I18n.t('common.ago.very_long', locale: StTools.configuration.locale) if time.year < 1800 return I18n.t('common.ago.just_now', locale: StTools.configuration.locale) if secs > -1 && secs < 1 return '' if secs <= -1 pair = self.ago_in_words_pair(secs) pair << I18n.t("common.ago.ago_word", locale: StTools.configuration.locale) if ago == true pair.join(' ') end |
.memory ⇒ String
Метод возвращает форматированную строку с объемом памяти, занимаемым текущим процессом (pid).
53 54 55 56 |
# File 'lib/st_tools/human.rb', line 53 def self.memory val = ::StTools::System.memory return self.bytes(val) end |
.number(val) ⇒ String
Метод форматирует число, добавляя суффиксы ‘тыс.’, ‘млн.’ и пр. Предварительно необходимо вызвать StTools.configure { |config| config.locale = :ru }.
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/st_tools/human.rb', line 15 def self.number(val) StTools.configuration.numbers_array.each_pair do |e, s| if val < s if s <= 1000*1000 return "#{(val.to_f / (s / 1000)).round(0)}#{I18n.t('st_tools.numbers_separator', locale: StTools.configuration.locale)}#{e}" else return "#{(val.to_f / (s / 1000)).round(1)}#{I18n.t('st_tools.numbers_separator', locale: StTools.configuration.locale)}#{e}" end end end end |
.pretty_number(value, round: 0, nobr: false, strong: false) ⇒ String
Метод оформляет число красивым способом, в виде “1 456 742,34”.
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/st_tools/human.rb', line 194 def self.pretty_number(value, round: 0, nobr: false, strong: false) out = StTools::String.to_float(value, round: round, stop: false).to_s arr = out.split(/[\,\.]/) tmp = arr.first.split(//).reverse.each_slice(3).to_a out = Array.new tmp.each do |one| out << one.reverse.join end out = out.reverse.join(' ') if arr.count > 1 out = [out, (arr.last + '000000000000000')[0,round]].join(',') end out = "<nobr>#{out}</nobr>" if nobr out = "<strong>#{out}</strong>" if strong out end |
.seconds_ago(secs, ago = true) ⇒ String
Метод принимает параметр - количество секунд между двумя любыми событиями в секундах, и переводит их в строку на русском или иных языках вида “4 дня 23 часа назад”. Предварительно необходимо вызвать StTools.configure { |config| config.locale = :ru (или :en) }.
93 94 95 96 97 98 99 100 |
# File 'lib/st_tools/human.rb', line 93 def self.seconds_ago(secs, ago = true) secs_i = secs.to_i return I18n.t('common.ago.just_now', locale: StTools.configuration.locale) if secs_i > -1 && secs_i < 1 return '' if secs_i <= -1 pair = self.ago_in_words_pair(secs_i) pair << I18n.t("common.ago.ago_word", locale: StTools.configuration.locale) if ago == true pair.join(' ') end |