st_tools 0.3.8 → 0.3.9
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 +4 -4
- data/README.md +17 -0
- data/lib/modules/string.rb +13 -0
- data/lib/st_tools/fias.rb +1 -1
- data/lib/st_tools/string.rb +24 -1
- data/lib/st_tools/version.rb +1 -1
- data/test/string_lib_spec.rb +14 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 43ec9fa72dac604d2acb1fda81c52417ccf5c2cd
|
|
4
|
+
data.tar.gz: 04f54d9f33e84cf8f9cfa8ec05072ae58c56c436
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a74cac459d7d97a7e3a9d5e4de5a9419a64f993b8a81a5e3ac24b9ce18db7de1d29f02ffae9f7007c5580e335164ddb90aa5b00c06d3093935e3bc26b54dd5a9
|
|
7
|
+
data.tar.gz: b3d422acf564373ecfc93de98307cdadc76ff8e644fbbb8a3262318674c138c7cab9c20539e068c410297ae79ea47e05084ee576ce509e4991733589a8140333
|
data/README.md
CHANGED
|
@@ -237,6 +237,23 @@ StTools::Setup.setup(:en)
|
|
|
237
237
|
# => "Discount is <em>$100</em> or <em>$200</em>"
|
|
238
238
|
```
|
|
239
239
|
|
|
240
|
+
В ряде случаев необходимо обрезать строку таким образом, чтобы на экране уместилась часть строки, и многоточие,
|
|
241
|
+
которе показывает, что строка была сокращена. Для этого можно использовать метод `StTools::String.prune`.
|
|
242
|
+
|
|
243
|
+
```ruby
|
|
244
|
+
StTools::String.prune("1234567890", 20) #=> "1234567890"
|
|
245
|
+
StTools::String.prune("1234567890", 8) #=> "12345..."
|
|
246
|
+
StTools::String.prune("1234567890", 8, endwidth: '---') #=> "12345---"
|
|
247
|
+
StTools::String.prune("Привет мир!", 12) #=> "Привет ми..."
|
|
248
|
+
StTools::String.prune("Привет мир!", 12, words: true) #=> "Привет..."
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Следует обратить внимание на два момента. Во-первых, строка обрезается до указанной длины ПЛЮС длина завершающего многточия.
|
|
252
|
+
То есть при указании `StTools::String.prune("1234567890", 5)` результат будет `"12..."`. Во-вторых, если указать параметр
|
|
253
|
+
`word: true`, то произойдет более "умное" обрезание фразы - не посреди слова (как показано в примере выше), а по границе
|
|
254
|
+
слова, то есть по пробелу между словами в меньшую сторону.
|
|
255
|
+
|
|
256
|
+
|
|
240
257
|
Вы можете подмешать модуль `StTools::Module` в классы String, Integer, Time.
|
|
241
258
|
|
|
242
259
|
```ruby
|
data/lib/modules/string.rb
CHANGED
|
@@ -90,6 +90,19 @@ module StTools
|
|
|
90
90
|
::StTools::String.caps(self)
|
|
91
91
|
end
|
|
92
92
|
|
|
93
|
+
# Метод обрезает строку и добавляет в случае обрезнаия многоточие
|
|
94
|
+
#
|
|
95
|
+
# @return [String] сокращенная строка строка
|
|
96
|
+
# @example Обрезание строки
|
|
97
|
+
# "1234567890".prune(20) #=> "1234567890"
|
|
98
|
+
# "1234567890".prune(8) #=> "12345..."
|
|
99
|
+
# "1234567890".prune(8, endwidth: '---') #=> "12345---"
|
|
100
|
+
# "Привет мир!".prune(12) #=> "Привет ми..."
|
|
101
|
+
# "Привет мир!".prune(12, words: true) #=> "Привет..."
|
|
102
|
+
def prune(length, words: false, endwith: '...')
|
|
103
|
+
::StTools::String.prune(self, length, words, endwith)
|
|
104
|
+
end
|
|
105
|
+
|
|
93
106
|
# Метод переводит строку в значение boolean (true или false). True - если строка имеет одно из трех значений:
|
|
94
107
|
# ['true', 'on', '1']
|
|
95
108
|
#
|
data/lib/st_tools/fias.rb
CHANGED
data/lib/st_tools/string.rb
CHANGED
|
@@ -171,7 +171,7 @@ module StTools
|
|
|
171
171
|
return nil if text.nil?
|
|
172
172
|
str = self.downcase(text)
|
|
173
173
|
str.gsub!(/(^[а-яa-z]|[а-яa-z\s]-[а-яa-z]|[\.\s\_][а-яa-z])/) do |part|
|
|
174
|
-
part.gsub(/.\b
|
|
174
|
+
part.gsub(/.\b\z/) { |x| self.upcase(x) }
|
|
175
175
|
end
|
|
176
176
|
return str
|
|
177
177
|
rescue
|
|
@@ -243,5 +243,28 @@ module StTools
|
|
|
243
243
|
out.join
|
|
244
244
|
end
|
|
245
245
|
|
|
246
|
+
# Метод обрезает строку и добавляет в случае обрезания строки многоточие
|
|
247
|
+
#
|
|
248
|
+
# @param [Object] text строка для обрезания
|
|
249
|
+
# @param [Object] length необходимая длина строки С УЧЕТОМ окончания (многоточия)
|
|
250
|
+
# @param [Object] words если true, то не будет слов "разрезанных" на части. По умолчанию false
|
|
251
|
+
# @param [Object] endwith завершающее многоточие (по умолчанию '...')
|
|
252
|
+
# @return [String] сокращенная строка строка
|
|
253
|
+
# @example Примеры использования
|
|
254
|
+
# StTools::String.prune("1234567890", 20) #=> "1234567890"
|
|
255
|
+
# StTools::String.prune("1234567890", 8) #=> "12345..."
|
|
256
|
+
# StTools::String.prune("1234567890", 8, endwidth: '---') #=> "12345---"
|
|
257
|
+
# StTools::String.prune("Привет мир!", 12) #=> "Привет ми..."
|
|
258
|
+
# StTools::String.prune("Привет мир!", 12, words: true) #=> "Привет..."
|
|
259
|
+
def self.prune(text, length, words: false, endwith: '...')
|
|
260
|
+
return '' if text.nil? || text == ''
|
|
261
|
+
return text if text.length <= length
|
|
262
|
+
return text[0, length] if length <= endwith.length
|
|
263
|
+
|
|
264
|
+
out = text.strip[0,length - endwith.length]
|
|
265
|
+
out.gsub!(/\s.+\z/, '') if words
|
|
266
|
+
out.strip + endwith
|
|
267
|
+
end
|
|
268
|
+
|
|
246
269
|
end
|
|
247
270
|
end
|
data/lib/st_tools/version.rb
CHANGED
data/test/string_lib_spec.rb
CHANGED
|
@@ -139,5 +139,19 @@ describe 'Проверка методов StTools::String.*' do
|
|
|
139
139
|
expect(test).to eq('<em>Паша</em>, <em>Маша</em> or <em>Саша</em>')
|
|
140
140
|
end
|
|
141
141
|
|
|
142
|
+
it 'prune' do
|
|
143
|
+
test = ::StTools::String.prune('1234567890', 20)
|
|
144
|
+
expect(test).to eq('1234567890')
|
|
145
|
+
test = ::StTools::String.prune('1234567890', 8)
|
|
146
|
+
expect(test).to eq('12345...')
|
|
147
|
+
test = ::StTools::String.prune('1234567890', 8, words: true)
|
|
148
|
+
expect(test).to eq('12345...')
|
|
149
|
+
test = ::StTools::String.prune('1234567890', 8, words: true, endwith: '---')
|
|
150
|
+
expect(test).to eq('12345---')
|
|
151
|
+
test = ::StTools::String.prune('Привет мир и природа', 12)
|
|
152
|
+
expect(test).to eq('Привет ми...')
|
|
153
|
+
test = ::StTools::String.prune('Привет мир и природа', 12, words: true)
|
|
154
|
+
expect(test).to eq('Привет...')
|
|
155
|
+
end
|
|
142
156
|
|
|
143
157
|
end
|
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.3.
|
|
4
|
+
version: 0.3.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stan Zhuravlev
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-06-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|