st_tools 0.3.8 → 0.3.9
Sign up to get free protection for your applications and to get access to all the features.
- 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
|