st_tools 0.4.2 → 0.4.3
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 +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: []
|