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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a88a647c0f49b178c918012abe51b2726ecf6df2
4
- data.tar.gz: a337d8e0a59aae2051b5d9aaa628f02c08d8f352
3
+ metadata.gz: 43ec9fa72dac604d2acb1fda81c52417ccf5c2cd
4
+ data.tar.gz: 04f54d9f33e84cf8f9cfa8ec05072ae58c56c436
5
5
  SHA512:
6
- metadata.gz: df2417819b173f060738656706bfd3f1d643707a822cc4274bc58114cd6f4e9036c485702f883000b6a6b5ea75d3a9f8cdc2cf812a2f980a0bf97806588ba81c
7
- data.tar.gz: b10f05b28ae6266b5e6319ec54c62023a0f20efb77181b2f75dc6faf4c8406dc16ce322ac8bad19981d6bdd5f6ba8e228ac710865c9f1be519bf9fb3dbc120c7
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
@@ -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
@@ -110,7 +110,7 @@ module StTools
110
110
  # StTools::Fias.postalcode?('1234') #=> false
111
111
  def self.postalcode?(text)
112
112
  return nil if text.nil?
113
- if text.to_s.strip.match(/^\d{6}$/)
113
+ if text.to_s.strip.match(/\A\d{6}\z/)
114
114
  return true
115
115
  end
116
116
  return false
@@ -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$/) { |x| self.upcase(x) }
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
@@ -1,3 +1,3 @@
1
1
  module StTools
2
- VERSION = '0.3.8'
2
+ VERSION = '0.3.9'
3
3
  end
@@ -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.8
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-05-31 00:00:00.000000000 Z
11
+ date: 2015-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler