st_tools 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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