st_tools 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +258 -0
- data/bin/console +14 -0
- data/bin/setup +10 -0
- data/lib/i18n/en.yml +72 -0
- data/lib/i18n/ru.yml +49 -0
- data/lib/modules/fias.rb +57 -0
- data/lib/modules/integer.rb +28 -0
- data/lib/modules/string.rb +105 -0
- data/lib/modules/time.rb +23 -0
- data/lib/st_tools/common.rb +30 -0
- data/lib/st_tools/fias.rb +111 -0
- data/lib/st_tools/human.rb +140 -0
- data/lib/st_tools/progress_bar.rb +73 -0
- data/lib/st_tools/string.rb +170 -0
- data/lib/st_tools/system.rb +38 -0
- data/lib/st_tools/version.rb +3 -0
- data/lib/st_tools.rb +36 -0
- data/test/fias_lib_spec.rb +112 -0
- data/test/human_lib_spec.rb +64 -0
- data/test/progress_bar_lib_spec.rb +18 -0
- data/test/string_lib_spec.rb +99 -0
- data/test/system_lib_spec.rb +25 -0
- metadata +130 -0
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
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: секунд
|
data/lib/modules/fias.rb
ADDED
@@ -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
|
data/lib/modules/time.rb
ADDED
@@ -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
|