st_tools 0.4.2 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/st_tools/string.rb +24 -20
- data/lib/st_tools/version.rb +1 -1
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 1b21d03339518239f79ea96ff3c5260a8a71b88f8129aa322082d3c76175b95f
|
4
|
+
data.tar.gz: 4116ad80bda1ff6ea259df241145c08a1f1bfaa0d0b2003345a6e357d318c327
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 05da249760de15e0b488f62c6d7dd827088a5080f928e3b2a78f7143f17f774aa78c442b855431b8f0392d556a0e78547aec7346d86c7d28b71eee60b2db3a22
|
7
|
+
data.tar.gz: e7742ea8f2710fe955652e697352ea3d912ec7ed0f29409e8e60225e3bc891ead2a87aa4f62b47fea83c94973601b9bbdc16dbf6d97ed43a90bbbcb948d813f4
|
data/lib/st_tools/string.rb
CHANGED
@@ -13,12 +13,13 @@ module StTools
|
|
13
13
|
translited = translited.tr('АБВГДЕЁЗИЙКЛМНОПРСТУФХЭЫЬ', 'ABVGDEEZIJKLMNOPRSTUFHEY\'\'')
|
14
14
|
|
15
15
|
translited = translited.gsub(/[жцчшщъюяЖЦЧШЩЪЮЯ]/, 'ж' => 'zh', 'ц' => 'ts', 'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch',
|
16
|
-
'ъ'
|
17
|
-
'Ж'
|
18
|
-
'Ъ'
|
16
|
+
'ъ' => '', 'ю' => 'ju', 'я' => 'ja',
|
17
|
+
'Ж' => 'Zh', 'Ц' => 'Ts', 'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch',
|
18
|
+
'Ъ' => '', 'Ю' => 'Ju', 'Я' => 'Ja')
|
19
19
|
translited.gsub('\'', '')
|
20
20
|
end
|
21
21
|
|
22
|
+
|
22
23
|
# Метод преобразует строку в нижний регистр с одновременной заменой буквы 'ё' на 'е'.
|
23
24
|
# Метод имеет примерно в два раза более высокую производительности по сравнению с традиционным .mb_chars.downcase.to_s,
|
24
25
|
# но имеет ограничение - работа только с русскими и английскими строками
|
@@ -29,16 +30,13 @@ module StTools
|
|
29
30
|
# StTools::String.downcase("Hello, Вася!") #=> "hello, вася!"
|
30
31
|
def self.downcase(text)
|
31
32
|
if text
|
32
|
-
|
33
|
-
|
34
|
-
'qwertyuiopasdfghjklzxcvbnmабвгдеежзийклмнопрстуфхцчшщъыьэюя')
|
35
|
-
else
|
36
|
-
return text.downcase
|
37
|
-
end
|
33
|
+
return text.tr('QWERTYUIOPASDFGHJKLZXCVBNMАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ',
|
34
|
+
'qwertyuiopasdfghjklzxcvbnmабвгдеежзийклмнопрстуфхцчшщъыьэюя')
|
38
35
|
end
|
39
36
|
""
|
40
37
|
end
|
41
38
|
|
39
|
+
|
42
40
|
# Метод преобразует строку в верхний регистр с одновременной заменой буквы 'Ё' на 'Е'.
|
43
41
|
# Метод имеет примерно в два раза более высокую производительности по сравнению с традиционным .mb_chars.downcase.to_s,
|
44
42
|
# но имеет ограничение - работа только с русскими и английскими строками
|
@@ -49,16 +47,13 @@ module StTools
|
|
49
47
|
# StTools::String.upcase("Hello, Вася!") #=> "HELLO, ВАСЯ!"
|
50
48
|
def self.upcase(text)
|
51
49
|
if text
|
52
|
-
|
53
|
-
|
54
|
-
'QWERTYUIOPASDFGHJKLZXCVBNMАБВГДЕЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ')
|
55
|
-
else
|
56
|
-
return text.upcase
|
57
|
-
end
|
50
|
+
return text.tr('qwertyuiopasdfghjklzxcvbnmабвгдеёжзийклмнопрстуфхцчшщъыьэюя',
|
51
|
+
'QWERTYUIOPASDFGHJKLZXCVBNMАБВГДЕЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ')
|
58
52
|
end
|
59
53
|
""
|
60
54
|
end
|
61
55
|
|
56
|
+
|
62
57
|
# Метод заменяет в исходной строке английские символы, похожие
|
63
58
|
# на русские - на соответстующие русские символы. То есть это похоже на ситуацию,
|
64
59
|
# когда Google меняет слово, случайно написанное английскими буквами - на русское слово. Одновременно
|
@@ -71,6 +66,7 @@ module StTools
|
|
71
66
|
text.tr('ёЁEeHCcTOoPpAHKXxBM', 'еЕЕеНСсТОоРрАНКХхВМ')
|
72
67
|
end
|
73
68
|
|
69
|
+
|
74
70
|
# Метод проводит нормализацию строки для последующей машиной обработки. При этом осуществляется:
|
75
71
|
# - убирается букву 'ё'
|
76
72
|
# - перевод строку в нижний регистр
|
@@ -91,6 +87,7 @@ module StTools
|
|
91
87
|
self.downcase(out).strip.gsub(/[\s\t\u00A0]{1,100}/, ' ')
|
92
88
|
end
|
93
89
|
|
90
|
+
|
94
91
|
# Метод позволяет показывать клиенту строку в неполном объеме, с закрытием части символов в строке звездочкой.
|
95
92
|
# При этом число звездочек в строке определеяется ее длиной. Чем строка дилинее - тем больше в ней звездочек.
|
96
93
|
#
|
@@ -104,13 +101,14 @@ module StTools
|
|
104
101
|
def self.hide(text)
|
105
102
|
return nil if text.nil?
|
106
103
|
len = text.length - 3
|
107
|
-
0.upto((len/4).to_i) do
|
108
|
-
pos
|
104
|
+
0.upto((len / 4).to_i) do
|
105
|
+
pos = rand(len)
|
109
106
|
text[pos, 1] = '*'
|
110
107
|
end
|
111
108
|
return text
|
112
109
|
end
|
113
110
|
|
111
|
+
|
114
112
|
# Метод аналогичен обычной функции split, однако дополнительно может выполнять следующие действия:
|
115
113
|
# - strip каждого элемента
|
116
114
|
# - normalize соответсвующей функцией (#normalize)
|
@@ -142,6 +140,7 @@ module StTools
|
|
142
140
|
return []
|
143
141
|
end
|
144
142
|
|
143
|
+
|
145
144
|
# Метод возвращает полный массив Array [1, 4, 5, 6, 7, 456] для строк вида '1, 4, 5-7, 456'.
|
146
145
|
# Дополнительно осуществляется:
|
147
146
|
# - сортировка в прямом порядке
|
@@ -163,7 +162,7 @@ module StTools
|
|
163
162
|
tmp = self.split(text, ',')
|
164
163
|
tmp.each do |one|
|
165
164
|
if one.match(/\-/)
|
166
|
-
d
|
165
|
+
d = one.split(/\-/)
|
167
166
|
out += Range.new(d.first.to_i, d.last.to_i).to_a
|
168
167
|
else
|
169
168
|
out << one.to_i
|
@@ -176,6 +175,7 @@ module StTools
|
|
176
175
|
return out
|
177
176
|
end
|
178
177
|
|
178
|
+
|
179
179
|
# Метод делает заглавной первую букву в словах, разделенных пробелами или дефисом.
|
180
180
|
#
|
181
181
|
# @param [String] text исходная строка
|
@@ -193,6 +193,7 @@ module StTools
|
|
193
193
|
return text
|
194
194
|
end
|
195
195
|
|
196
|
+
|
196
197
|
# Метод конвертирует строку в тип boolean
|
197
198
|
#
|
198
199
|
# @param [String] text исходная строка, содержащая 'true/false', 'on/off', '1/0'
|
@@ -221,6 +222,7 @@ module StTools
|
|
221
222
|
false
|
222
223
|
end
|
223
224
|
|
225
|
+
|
224
226
|
# Метод преобразует список Array в строку перечисление вида "это, это и это". Метод позволяет
|
225
227
|
# делать перечсиелние на разных языках, использовать частицы 'и' и 'или', а также оформлять
|
226
228
|
# список тегами HTML.
|
@@ -240,9 +242,9 @@ module StTools
|
|
240
242
|
def self.pretty_list(items, separator: ',', union: :and, pretag: '', afttag: '')
|
241
243
|
return '' if items.nil? || items.empty?
|
242
244
|
return "#{pretag}#{items.first}#{afttag}" if items.count == 1
|
243
|
-
out
|
245
|
+
out = Array.new
|
244
246
|
last = items.last
|
245
|
-
arr
|
247
|
+
arr = items[0, items.count - 1]
|
246
248
|
arr.each do |one|
|
247
249
|
out << "#{pretag}#{one}#{afttag}"
|
248
250
|
out << separator + ' '
|
@@ -258,6 +260,7 @@ module StTools
|
|
258
260
|
out.join
|
259
261
|
end
|
260
262
|
|
263
|
+
|
261
264
|
# Метод обрезает строку и добавляет в случае обрезания строки многоточие
|
262
265
|
#
|
263
266
|
# @param [Object] text строка для обрезания
|
@@ -281,6 +284,7 @@ module StTools
|
|
281
284
|
out.strip + endwith
|
282
285
|
end
|
283
286
|
|
287
|
+
|
284
288
|
# Метод преобразует строковое выражение в число с плавающей запятой. При этом метод корректно преобразует
|
285
289
|
# числа вида "12.34" и "12,34", то есть с точкой и запятой (но будет некорректный результат в случае
|
286
290
|
# американских чисел, где запятая - разделитель тысяч, а не дробная часть).
|
data/lib/st_tools/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: st_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stan Zhuravlev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -128,9 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
128
|
- !ruby/object:Gem::Version
|
129
129
|
version: '0'
|
130
130
|
requirements: []
|
131
|
-
|
132
|
-
rubygems_version: 2.4.5
|
131
|
+
rubygems_version: 3.0.1
|
133
132
|
signing_key:
|
134
133
|
specification_version: 4
|
135
|
-
summary:
|
134
|
+
summary: Методы общего назначения
|
136
135
|
test_files: []
|