st_tools 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dbc4df1cb453510d365fd64c9706ff8f6a733412
4
+ data.tar.gz: 999050e842607f77143e00d9881174f8489a30d8
5
+ SHA512:
6
+ metadata.gz: 2f46739ed694b711f20045b4e82f5d0bdfd0cfd8e504d45bf875dac97743e7f6dd9cfabae93080a6b7b41e54384fd0daeba74cb065f2272cbdbac38343f4f07e
7
+ data.tar.gz: ecf50eaa21dd3672fe40d0e42a4905619ea944bc4996d58c0a949391b6f9f6cafb050a6e880136e3656663bb732368eb5d0b5fd9cbddfd79f3e3778e4abacdcb
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Stan Zhuravlev
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,258 @@
1
+ # StTools
2
+
3
+ Данные гем содержит методы, обеспечивающие:
4
+ - преобразование строк с учетом русского языка
5
+ - формирования человеко-удобной информации
6
+ - получения разных системных характеристик CLI-приложений
7
+ - управление прогресс-баром CLI-приложений
8
+
9
+ ## Установка
10
+
11
+ Добавить в Gemfile:
12
+
13
+ ```ruby
14
+ gem 'st_tools'
15
+ ```
16
+
17
+ Установите гем cредствами Bundler:
18
+
19
+ $ bundle
20
+
21
+ Или установите его отдельно:
22
+
23
+ $ gem install st_tools
24
+
25
+ # Зависимости
26
+
27
+ Для работы гема требуется Ruby не младше версии 2.0.0. StTools не привязана к Rails и может использоваться в CLI-приложениях.
28
+ Класс StTools::ProgressBar является надстройкой над гемом 'progressbar-ruby'.
29
+
30
+ ## Использование
31
+
32
+ Часть методов библиотеки поддерживают русскую и английскую локализацию.
33
+ Поскольку все методы StTools могут вызываться без создания класса - конструктор не вызывается.
34
+ Поэтому перед работой библиотеки рекомендуется вызвать StTools::Setup.setup(:ru или :en).
35
+
36
+ ### StTools::Human
37
+
38
+ Вы вызываете в любой момент StTools::Human.memory и узнаете текущий размер памяти, занимаемый приложением (процессом)
39
+
40
+ ```ruby
41
+ StTools.Human.memory # => 14 кбайт
42
+ StTools.Human.memory # => 45,3 Мбайт
43
+ StTools.Human.memory # => 2,6 Гбайт
44
+ ```
45
+
46
+ Вы вызываете StTools::Human.bytes и перевести любое значение в человеко-удобный вид. Метод можно использовать для показа размера файла
47
+
48
+ ```ruby
49
+ StTools.Human.bytes(345) # => 345 байт
50
+ StTools.Human.bytes(14653) # => 14,5 кбайт
51
+ StTools.Human.bytes(23653763) # => 23,4 Мбайт
52
+ ```
53
+
54
+ Вы вызываете StTools::Human.number для перевода любого значения в человеко-удобный вид.
55
+ Метод можно использовать для показа, например, суммы денег
56
+
57
+ ```ruby
58
+ StTools.Human.number(345) # => 345
59
+ StTools.Human.number(14653) # => 14,6 тыс.
60
+ StTools.Human.number(23653763) # => 23,7 млн.
61
+ ```
62
+
63
+ Вы имеете возможность узнать разницу между текущим временем и временем какого-либо события.
64
+
65
+ ```ruby
66
+ StTools::Setup.setup(:ru)
67
+ StTools.Human.ago_in_words(DateTime.new(2014,12,31), true) # => 4 месяца 21 день назад
68
+ StTools.Human.ago_in_words(DateTime.new(2013,08,01), false) # => 1 год 8 месяца
69
+ StTools.Human.ago_in_words(Time.now - 15, true) # => 15 секунд назад
70
+ ```
71
+
72
+ ```ruby
73
+ StTools::Setup.setup(:en)
74
+ StTools.Human.ago_in_words(DateTime.new(2014,12,31), true) # => 4 months 21 days ago
75
+ StTools.Human.ago_in_words(DateTime.new(2013,08,01), false) # => 1 year 8 months
76
+ StTools.Human.ago_in_words(Time.now - 15, true) # => 15 seconds ago
77
+ ```
78
+
79
+ Устанавливая флаг ```ago=true```, метод добавит слово "назад" или "ago" в конце фразы.
80
+
81
+ Результирующая фраза всегда состоит из одного показатели (при разнице времени событий меньше минуты) или из двух (минуты/секунды, часы/минуты, дни/часы, месяцы/дни, года/месяцы)
82
+
83
+ Вы имеете форматировать дату и время в соответствии с правилами русского и английского языка.
84
+
85
+ ```ruby
86
+ StTools::Setup.setup(:ru)
87
+ StTools.Human.format_time(Time.now, :full, :full) # => 28 апреля 2015 г. 10:45:23
88
+ StTools.Human.format_time(Time.now, :date, :full) # => 28 апреля 2015 г.
89
+ StTools.Human.format_time(Time.now, :time, :full) # => 10:45:23
90
+ StTools.Human.format_time(Time.now, :full, :short) # => 28/04/2015 10:45
91
+ StTools.Human.format_time(Time.now, :date, :short) # => 28/04/2015
92
+ StTools.Human.format_time(Time.now, :time, :short) # => 10:45
93
+ ```
94
+
95
+ ```ruby
96
+ StTools::Setup.setup(:en)
97
+ StTools.Human.format_time(Time.now, :full, :full) # => April 28, 2015 09:45:23 am
98
+ StTools.Human.format_time(Time.now, :date, :full) # => April 28, 2015
99
+ StTools.Human.format_time(Time.now, :time, :full) # => 09:45:23 am
100
+ StTools.Human.format_time(Time.now, :full, :short) # => 04/28/2015 09:45 am
101
+ StTools.Human.format_time(Time.now, :date, :short) # => 04/28/2015
102
+ StTools.Human.format_time(Time.now, :time, :short) # => 09:45 am
103
+ ```
104
+
105
+ Вы можете подмешать модуль `StTools::Module` в классы String, Integer, Time.
106
+
107
+ ```ruby
108
+ StTools::Setup.setup(:ru)
109
+
110
+ class String
111
+ extend StTools::Module::String
112
+ end
113
+
114
+ (Time.now - 15).human_ago # => 15 секунд назад
115
+ Time.now.format_date # => 28 апреля 2015 г.
116
+ Time.now.format_date(:short) # => 28/04/2015
117
+ ```
118
+
119
+ ### StTools::String
120
+
121
+ Транслитерация строки из русского на английский
122
+
123
+ ```ruby
124
+ StTools::String.translit('Жмеринка') # => Zhmerinka
125
+ ```
126
+
127
+ Иногда пользователи вводят английские буквы, похожие на русские, чаще все - букву 'C'. Метод delat заменяет такие символы на русские
128
+
129
+ ```ruby
130
+ StTools::String.delat('Соль') # => Соль
131
+ ```
132
+
133
+ Перевести строку в верхний или нижний регистр. Используется метод, альтернативный mb_chars (примерно в два раза производительней)
134
+
135
+ ```ruby
136
+ StTools::String.downcase('Москва') # => москва
137
+ StTools::String.upcase('Москва') # => МОСКВА
138
+ ```
139
+
140
+ Иногда надо нормализовать строку и привести ее к виду, удобному для машинной обработки.
141
+ Метод normalize последовательно делает: strip, delat, downcase
142
+
143
+ ```ruby
144
+ StTools::String.normalize(' Москва ') # => "москва"
145
+ ```
146
+
147
+ Следующий метод приводит строку к нижнему регистру, но делает первую букву заглавной.
148
+ Удобно для нормализации имени и фамилии, вводимых пользователем
149
+
150
+ ```ruby
151
+ StTools::String.caps('санКТ-петерБург') # => "Санкт-Петербург"
152
+ ```
153
+
154
+ Для реализации деморежимов различных приложений иногда надо скрыть реальный результат.
155
+ Для это можно использовать метод hide_text
156
+
157
+ ```ruby
158
+ StTools::String.hide_text('Краснодар') # => "Кра*но*ар"
159
+ ```
160
+
161
+ В Ruby отсутствует метод перевода строки пользователя в тип Boolean.
162
+
163
+ ```ruby
164
+ StTools::String.to_bool('true') # => true
165
+ StTools::String.to_bool('on') # => true
166
+ StTools::String.to_bool('1') # => true
167
+ StTools::String.to_bool('faLSE') # => false
168
+ StTools::String.to_bool('off') # => false
169
+ StTools::String.to_bool('0') # => false
170
+ ```
171
+
172
+ Если пользователь введет в качестве входного параметра перечисление, следующий метод разобъет его на токены,
173
+ с нормализацией при необходимости
174
+
175
+ ```ruby
176
+ StTools::String.split('ТАНЯ, маша, петя', ',') # => ['ТАНЯ', 'маша', 'петя']
177
+ StTools::String.split('ТАНЯ, маша, петя', ',', normalize: true) # => ['таня', 'маша', 'петя']
178
+ StTools::String.split('ТАНЯ, маша, петя', ',', normalize: true, sort: true) # => ['маша', 'петя', 'таня']
179
+ ```
180
+
181
+ Если от пользователя требуется ввести численные значения в виде перечисления или диапазоне, нужно использовать
182
+ метод to_range
183
+
184
+ ```ruby
185
+ StTools::String.to_range('54, 3-6, 5, 1') # => [54, 3, 5, 6, 5, 1]
186
+ StTools::String.to_range('54, 3-6, 5, 1', uniq: true) # => [54, 3, 5, 6, 1]
187
+ StTools::String.to_range('54, 3-6, 5, 1', uniq: true, sort: true) # => [1, 3, 5, 6, 54]
188
+ ```
189
+
190
+ Вы можете подмешать модуль `StTools::Module` в классы String, Integer, Time.
191
+
192
+ ```ruby
193
+ StTools::Setup.setup(:ru)
194
+
195
+ class String
196
+ extend StTools::Module::String
197
+ end
198
+
199
+ 'санКТ-петерБург'.caps # => Санкт-Петербург
200
+ 'санКТ-петерБург'.downcase # => санкт-петербург
201
+ 'санКТ-петерБург'.upcase # => САНКТ-ПЕТЕРБУРГ
202
+ 'on'.to_bool # => true
203
+ '34, 2-5, 8, 1'.to_range(sort: true) # => [1, 2, 4, 5, 8, 34]
204
+ 'Краснодар'.hide # => Кра*но*ар
205
+ ```
206
+
207
+ ### StTools::System
208
+
209
+ Узнать объем оперативной памяти, занятый приложением
210
+
211
+ ```ruby
212
+ StTools::System.memory # => 145734
213
+ ```
214
+
215
+ Узнать ширину и высоту текущего окна терминала в CLI-режиме
216
+
217
+ ```ruby
218
+ StTools::System.screen(:width) # => 114
219
+ StTools::System.screen(:height) # => 25
220
+ ```
221
+
222
+ ### StTools::ProgressBar
223
+
224
+ Данная бибилиотека базируется на геме 'progressbar-ruby' (https://github.com/jfelchner/ruby-progressbar), но надстройка над ним
225
+ упрощает использование библиотеки, и исключает некоторые проблемы.
226
+
227
+ Библиотека содержит две функции. Первая - инициирует начало отображения прогресс-бара
228
+
229
+ ```ruby
230
+ @bar = ::StTools::ProgressBar.new(title: "Тестовый запуск",
231
+ footer: "Занято [memory], выполнено за [executed_at] сек.",
232
+ max: 10000000)
233
+ ```
234
+
235
+ Задается заголовок, который будет отображен перед прогресс-баром. Затем указывается футер, который отобразиться как
236
+ только прогресс станет 100%. Футер содержит две шаблона:
237
+ - [memory], который будет заменен на результат вызова StTools::Human.memory
238
+ - [executed_at], который будет заменен на время в секундах завершенного процесса
239
+
240
+ Значение :max содержит финальное значение прогресса. Дополнительно рекомендуется задать значение :step, которое
241
+ показывает, на каком шаге в реальности должен меняться процент выполнения операции.
242
+
243
+ Затем, в цикле, который обеспечивает выполнение длительной операции, необходимо менять значение progress.
244
+
245
+ ```ruby
246
+ 10000010.times do |val|
247
+ @bar.progress = val
248
+ end
249
+ ```
250
+
251
+
252
+ ## Contributing
253
+
254
+ 1. Fork it ( https://github.com/[my-github-username]/st_tools/fork )
255
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
256
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
257
+ 4. Push to the branch (`git push origin my-new-feature`)
258
+ 5. Create a new Pull Request
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "st_tools"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ gem install st_tools --rdoc
8
+
9
+
10
+ # Do any other automated setup that you need to do here
data/lib/i18n/en.yml ADDED
@@ -0,0 +1,72 @@
1
+ # Files in the config/locales directory are used for internationalization
2
+ # and are automatically loaded by Rails. If you want to use locales other
3
+ # than English, add the necessary files in this directory.
4
+ #
5
+ # To use the locales, use `I18n.t`:
6
+ #
7
+ # I18n.t 'hello'
8
+ #
9
+ # In views, this is aliased to just `t`:
10
+ #
11
+ # <%= t('hello') %>
12
+ #
13
+ # To use a different locale, set it with `I18n.locale`:
14
+ #
15
+ # I18n.locale = :es
16
+ #
17
+ # This would use the information in config/locales/es.yml.
18
+ #
19
+ # To learn more, please read the Rails Internationalization guide
20
+ # available at http://guides.rubyonrails.org/i18n.html.
21
+
22
+ en:
23
+ hello: "Hello world"
24
+
25
+ defaults: &defaults
26
+ month_names:
27
+ [~, January, February, March, April, May, June, July, August, September, October, November, December]
28
+ formats:
29
+ default: "%m/%d/%Y"
30
+ date_full: "%B %-d, %Y"
31
+ full_full: "%B %-d, %Y %I:%M:%S %P"
32
+ time_full: "%I:%M:%S %P"
33
+ date_short: "%m/%d/%Y"
34
+ full_short: "%m/%d/%Y %I:%M:%S %P"
35
+ time_short: "%I:%M %P"
36
+ date:
37
+ <<: *defaults
38
+ time:
39
+ <<: *defaults
40
+ pm: pm
41
+ am: am
42
+
43
+
44
+ common:
45
+ ago:
46
+ very_long: 'long, long ago'
47
+ just_now: 'just now'
48
+ ago_word: 'ago'
49
+ year:
50
+ one: year
51
+ two: years
52
+ other: years
53
+ month:
54
+ one: month
55
+ two: months
56
+ other: months
57
+ day:
58
+ one: day
59
+ two: days
60
+ other: days
61
+ hour:
62
+ one: hour
63
+ two: hours
64
+ other: hours
65
+ minute:
66
+ one: minute
67
+ two: minutes
68
+ other: minutes
69
+ second:
70
+ one: second
71
+ two: seconds
72
+ other: seconds
data/lib/i18n/ru.yml ADDED
@@ -0,0 +1,49 @@
1
+ ru:
2
+ hello: "Привет, мир!"
3
+
4
+ defaults: &defaults
5
+ month_names:
6
+ [~, января, февраля, марта, апреля, мая, июня, июля, августа, сентября, октября, ноября, декабря]
7
+ formats:
8
+ default: "%d/%m/%Y"
9
+ date_full: "%-d %B %Y г."
10
+ full_full: "%-d %B %Y г. %H:%M:%S"
11
+ time_full: "%H:%M:%S"
12
+ date_short: "%d/%m/%Y"
13
+ full_short: "%d/%m/%Y %H:%M"
14
+ time_short: "%H:%M"
15
+ date:
16
+ <<: *defaults
17
+ time:
18
+ <<: *defaults
19
+
20
+
21
+ common:
22
+ ago:
23
+ very_long: 'очень давно'
24
+ just_now: 'сейчас'
25
+ ago_word: 'назад'
26
+ year:
27
+ one: год
28
+ two: года
29
+ other: лет
30
+ month:
31
+ one: месяц
32
+ two: месяца
33
+ other: месяцев
34
+ day:
35
+ one: день
36
+ two: дня
37
+ other: дней
38
+ hour:
39
+ one: час
40
+ two: часа
41
+ other: часов
42
+ minute:
43
+ one: минута
44
+ two: минуты
45
+ other: минут
46
+ second:
47
+ one: секунда
48
+ two: секунды
49
+ other: секунд
@@ -0,0 +1,57 @@
1
+ module StTools
2
+ module Module
3
+ module Fias
4
+
5
+ # Определяет принадлежность aoguid к федеральным городам (Москва, Санкт-Питербург, Байконур, Севастополь)
6
+ #
7
+ # @return [Boolean] true, если объект имеет тип uuid и равен aoguid одного из
8
+ # четырех федеральных городов
9
+ def federal?
10
+ ::StTools::Fias.federal?(self)
11
+ end
12
+
13
+ # Определяет, является ли aoguid Москвой
14
+ #
15
+ # @return [Boolean] true, если объект имеет тип uuid и равен aoguid Москвы
16
+ def moscow?
17
+ ::StTools::Fias.moscow?(self)
18
+ end
19
+
20
+ # Определяет, является ли aoguid Санкт-Петербургом
21
+ #
22
+ # @return [Boolean] true, если объект имеет тип uuid и равен aoguid Санкт-Петербурга
23
+ def spb?
24
+ ::StTools::Fias.spb?(self)
25
+ end
26
+
27
+ # Определяет, является ли aoguid Севастополем
28
+ #
29
+ # @return [Boolean] true, если объект имеет тип uuid и равен aoguid Севастополя
30
+ def sevastopol?
31
+ ::StTools::Fias.sevastopol?(self)
32
+ end
33
+
34
+ # Определяет, является ли aoguid Байконуром
35
+ #
36
+ # @return [Boolean] true, если объект имеет тип uuid и равен aoguid Байконура
37
+ def baikonur?
38
+ ::StTools::Fias.baikonur?(self)
39
+ end
40
+
41
+ # Определяет, содержит ли строка идентификатор типа uuid
42
+ #
43
+ # @return [Boolean] true, если строка имеет формат uuid
44
+ def uuid?
45
+ ::StTools::Fias.uuid?(self)
46
+ end
47
+
48
+ # Определяет, содержит ли строка почтовый индекс
49
+ #
50
+ # @return [Boolean] true, если строка имеет 6 цифр
51
+ def postalcode?
52
+ ::StTools::Fias.postalcode?(self)
53
+ end
54
+
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,28 @@
1
+ module StTools
2
+ module Module
3
+ module Integer
4
+
5
+ # Переводит число в строку с размером в байтах, кбайтах, Мбайтах и пр.
6
+ #
7
+ # @return [String] строка с суффиксом
8
+ def human_number
9
+ ::StTools::Human.number(self)
10
+ end
11
+
12
+ # Переводит число в строку с размером в байтах, кбайтах, Мбайтах и пр.
13
+ #
14
+ # @return [String] строка с суффиксом
15
+ def human_bytes
16
+ ::StTools::Human.bytes(self)
17
+ end
18
+
19
+ # Переводит число в значение boolean (true или false). Любое число false кроме 1 (единицы)
20
+ #
21
+ # @return [Boolean] true или false
22
+ def to_bool
23
+ ::StTools::String.to_bool(self)
24
+ end
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,105 @@
1
+ module StTools
2
+ module Module
3
+ module String
4
+
5
+ # Метод проводит транслитерацию русского текста
6
+ #
7
+ # @return [String] транслитерированная строка
8
+ def translit
9
+ ::StTools::String.translit(self)
10
+ end
11
+
12
+ # Метод заменяет случайно набранные английские символы (с, р, y) в соответствующие по написанию русские
13
+ #
14
+ # @return [String] строка, в которой случайно набранные английские символы заменены на русские
15
+ def delat
16
+ ::StTools::String.delat(self)
17
+ end
18
+
19
+ # Метод переводит русскую и английскую строку в нижний регистр без
20
+ # использования MultiByte (только UTF-8)
21
+ #
22
+ # @return [String] строка в нижнем регистре
23
+ # @example Перевод строки в нижний регистр
24
+ # "Владимир".upcase #=> "владимир"
25
+ def downcase
26
+ ::StTools::String.downcase(self)
27
+ end
28
+
29
+ # Метод переводит русскую и английскую строку в верхний регистр без
30
+ # использования MultiByte (только UTF-8)
31
+ #
32
+ # @return [String] строка в верхнем регистре
33
+ # @example Перевод строки в верхний регистр
34
+ # "Владимир".upcase #=> "ВЛАДИМИР"
35
+ def upcase
36
+ ::StTools::String.upcase(self)
37
+ end
38
+
39
+ # Метод удаляет пробелы в начале и конце строки, проводит #delat, #downcase
40
+ #
41
+ # @return [String] нормализованная строка
42
+ # @example Нормализация строки
43
+ # " Владимир".normalize #=> "владимир"
44
+ def normalize
45
+ ::StTools::String.normalize(self)
46
+ end
47
+
48
+ # Метод заменяет часть символов строки на звездочки
49
+ #
50
+ # @return [String] строка, в которой часть букв заменены на звездочки (случайным образом)
51
+ # @example Сокрытие части строки
52
+ # "Владимир".hide #=> "Вл*ди*ир"
53
+ def hide
54
+ ::StTools::String.hide_text(self)
55
+ end
56
+
57
+ # Метод разделяет строку на подстроки, и нормализует кажду подстроку через #normalize
58
+ #
59
+ # @param [String] separator строка-разделитель
60
+ # @param [Hash] opts - массив параметров вызова метода
61
+ # @option opts [Boolean] :sort - сортировать результирующий массив
62
+ # @option opts [Boolean] :uniq - удалить из результирующего массива дубликаты
63
+ # @return [Array] массив чисел
64
+ # @example Преобразование строки в массив чисел
65
+ # "Москва , Питер , Владимир".split(",") #=> ['москва', 'питер', 'владимир']
66
+ def split(separator, opts = {})
67
+ ::StTools::String.split(self, separator, opts)
68
+ end
69
+
70
+ # Метод переводит введенные человеком цифры, перечисленные через запятую и тире
71
+ # в массив чисел
72
+ #
73
+ # @param [Hash] opts
74
+ # @option opts [Boolean] :sort - сортировать результирующий массив
75
+ # @option opts [Boolean] :uniq - удалить из результирующего массива дубликаты
76
+ # @return [Array] массив чисел
77
+ # @example Преобразование строки в массив чисел
78
+ # "6, 3, 8-10, 1".to_range #=> [6, 3, 8, 9, 10, 1]
79
+ # "6, 3, 8-10".to_range(sort: true) #=> [1, 3, 6, 8, 9, 10]
80
+ def to_range(opts = {})
81
+ ::StTools::String.to_range(self, opts)
82
+ end
83
+
84
+ # Метод делает строку downcase но каждую букву каждого слова - заглавной
85
+ #
86
+ # @return [String] преобразованная строка
87
+ # @example Капитализация первых букв строки
88
+ # "саН-франЦИСКО".caps #=> "Сан-Франциско"
89
+ def caps
90
+ ::StTools::String.caps(self)
91
+ end
92
+
93
+ # Метод переводит строку в значение boolean (true или false). True - если строка имеет одно из трех значений:
94
+ # ['true', 'on', '1']
95
+ #
96
+ # @return [Boolean] true или false
97
+ # @example проверка, что строка - true
98
+ # "True".to_bool #=> true
99
+ def to_bool
100
+ ::StTools::String.to_bool(self)
101
+ end
102
+
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,23 @@
1
+ module StTools
2
+ module Module
3
+ module Time
4
+
5
+ def human_date(type = :full)
6
+ ::StTools::Human.format_time(self, :date, type)
7
+ end
8
+
9
+ def human_time(type = :full)
10
+ ::StTools::Human.format_time(self, :time, type)
11
+ end
12
+
13
+ def human_datetime(type = :full)
14
+ ::StTools::Human.format_time(self, :full, type)
15
+ end
16
+
17
+ def human_ago(ago = true)
18
+ ::StTools::Human.ago_in_words(self, ago)
19
+ end
20
+
21
+ end
22
+ end
23
+ end