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 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