st_tools 0.3.7 → 0.3.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -0
- data/lib/i18n/en.yml +6 -1
- data/lib/i18n/ru.yml +6 -1
- data/lib/st_tools/string.rb +37 -0
- data/lib/st_tools/version.rb +1 -1
- data/test/string_lib_spec.rb +33 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a88a647c0f49b178c918012abe51b2726ecf6df2
|
4
|
+
data.tar.gz: a337d8e0a59aae2051b5d9aaa628f02c08d8f352
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df2417819b173f060738656706bfd3f1d643707a822cc4274bc58114cd6f4e9036c485702f883000b6a6b5ea75d3a9f8cdc2cf812a2f980a0bf97806588ba81c
|
7
|
+
data.tar.gz: b10f05b28ae6266b5e6319ec54c62023a0f20efb77181b2f75dc6faf4c8406dc16ce322ac8bad19981d6bdd5f6ba8e228ac710865c9f1be519bf9fb3dbc120c7
|
data/README.md
CHANGED
@@ -221,6 +221,22 @@ StTools::String.to_range('54, 3-6, 5, 1', uniq: true) # => [
|
|
221
221
|
StTools::String.to_range('54, 3-6, 5, 1', uniq: true, sort: true) # => [1, 3, 5, 6, 54]
|
222
222
|
```
|
223
223
|
|
224
|
+
Следующий метод `pretty_list` позволяет сделать human-подобное оформление списков-перечислений.
|
225
|
+
|
226
|
+
```ruby
|
227
|
+
StTools::Setup.setup(:ru)
|
228
|
+
'Мы работаем ' + StTools::String.pretty_list([4,5,6]) + ' мая'
|
229
|
+
# => "Мы работаем 4, 5 и 6 мая"
|
230
|
+
'Доехать можно на трамваях ' + StTools::String.pretty_list([67, 89], union: :or) + ' маршрутов'
|
231
|
+
# => "Доехать можно на трамвае 67 или 89 маршрутов"
|
232
|
+
'Скидка составит ' + StTools::String.pretty_list([100, 200], union: :or, pretag: '<em>', afttag: '</em>') + ' руб.'
|
233
|
+
# => "Скидка составит <em>100</em> или <em>200</em> руб."
|
234
|
+
|
235
|
+
StTools::Setup.setup(:en)
|
236
|
+
'Discount is ' + StTools::String.pretty_list([100, 200], union: :or, pretag: '<em>$', afttag: '</em>')
|
237
|
+
# => "Discount is <em>$100</em> or <em>$200</em>"
|
238
|
+
```
|
239
|
+
|
224
240
|
Вы можете подмешать модуль `StTools::Module` в классы String, Integer, Time.
|
225
241
|
|
226
242
|
```ruby
|
data/lib/i18n/en.yml
CHANGED
data/lib/i18n/ru.yml
CHANGED
data/lib/st_tools/string.rb
CHANGED
@@ -206,5 +206,42 @@ module StTools
|
|
206
206
|
false
|
207
207
|
end
|
208
208
|
|
209
|
+
# Метод преобразует список Array в строку перечисление вида "это, это и это". Метод позволяет
|
210
|
+
# делать перечсиелние на разных языках, использовать частицы 'и' и 'или', а также оформлять
|
211
|
+
# список тегами HTML.
|
212
|
+
#
|
213
|
+
# @param [Array] items массив значений для оформления в виде списка
|
214
|
+
# @param [String] separator знак разделитель, по умолчанию запятая (',')
|
215
|
+
# @param [Sym] union признак частицы, если указать :and, то будет использована частица 'и', либо 'или' в других случаях
|
216
|
+
# @param [String] pretag открывающий тег HTML для обрамления элементов списка
|
217
|
+
# @param [String] afttag закрывающий тег HTML для обрамления элементов списка
|
218
|
+
#
|
219
|
+
# @return [String] конвертированная строка
|
220
|
+
# @example Примеры использования
|
221
|
+
# StTools::Setup.setup(:ru)
|
222
|
+
# StTools::String.pretty_list([1,2]) #=> "1 и 2"
|
223
|
+
# StTools::String.pretty_list([1,2,4]) #=> "1, 2 и 4"
|
224
|
+
# StTools::String.pretty_list([1,2,3,4], union: :or) #=> "1, 2, 3 или 4"
|
225
|
+
def self.pretty_list(items, separator: ',', union: :and, pretag: '', afttag: '')
|
226
|
+
return '' if items.nil? || items.empty?
|
227
|
+
return "#{pretag}#{items.first}#{afttag}" if items.count == 1
|
228
|
+
out = Array.new
|
229
|
+
last = items.last
|
230
|
+
arr = items[0,items.count-1]
|
231
|
+
arr.each do |one|
|
232
|
+
out << "#{pretag}#{one}#{afttag}"
|
233
|
+
out << separator + ' '
|
234
|
+
end
|
235
|
+
out.pop
|
236
|
+
case union
|
237
|
+
when :and
|
238
|
+
out << " #{I18n.t('string.pretty_list.and')} "
|
239
|
+
else
|
240
|
+
out << " #{I18n.t('string.pretty_list.or')} "
|
241
|
+
end
|
242
|
+
out << "#{pretag}#{last}#{afttag}"
|
243
|
+
out.join
|
244
|
+
end
|
245
|
+
|
209
246
|
end
|
210
247
|
end
|
data/lib/st_tools/version.rb
CHANGED
data/test/string_lib_spec.rb
CHANGED
@@ -106,5 +106,38 @@ describe 'Проверка методов StTools::String.*' do
|
|
106
106
|
expect(test).to eq(false)
|
107
107
|
end
|
108
108
|
|
109
|
+
it 'pretty_list(nil)' do
|
110
|
+
test = ::StTools::String.pretty_list(nil)
|
111
|
+
expect(test).to eq('')
|
112
|
+
end
|
113
|
+
|
114
|
+
it 'pretty_list - ru' do
|
115
|
+
::StTools::Setup.setup(:ru)
|
116
|
+
test = ::StTools::String.pretty_list(['Паша'])
|
117
|
+
expect(test).to eq('Паша')
|
118
|
+
test = ::StTools::String.pretty_list(['Паша', 'Маша'])
|
119
|
+
expect(test).to eq('Паша и Маша')
|
120
|
+
test = ::StTools::String.pretty_list(['Паша', 'Маша', 'Саша'])
|
121
|
+
expect(test).to eq('Паша, Маша и Саша')
|
122
|
+
test = ::StTools::String.pretty_list(['Паша', 'Маша', 'Саша'], union: :or)
|
123
|
+
expect(test).to eq('Паша, Маша или Саша')
|
124
|
+
test = ::StTools::String.pretty_list(['Паша', 'Маша', 'Саша'], union: :or, pretag: '<em>', afttag: '</em>')
|
125
|
+
expect(test).to eq('<em>Паша</em>, <em>Маша</em> или <em>Саша</em>')
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'pretty_list - en' do
|
129
|
+
::StTools::Setup.setup(:en)
|
130
|
+
test = ::StTools::String.pretty_list(['Паша'])
|
131
|
+
expect(test).to eq('Паша')
|
132
|
+
test = ::StTools::String.pretty_list(['Паша', 'Маша'])
|
133
|
+
expect(test).to eq('Паша and Маша')
|
134
|
+
test = ::StTools::String.pretty_list(['Паша', 'Маша', 'Саша'])
|
135
|
+
expect(test).to eq('Паша, Маша and Саша')
|
136
|
+
test = ::StTools::String.pretty_list(['Паша', 'Маша', 'Саша'], union: :or)
|
137
|
+
expect(test).to eq('Паша, Маша or Саша')
|
138
|
+
test = ::StTools::String.pretty_list(['Паша', 'Маша', 'Саша'], union: :or, pretag: '<em>', afttag: '</em>')
|
139
|
+
expect(test).to eq('<em>Паша</em>, <em>Маша</em> or <em>Саша</em>')
|
140
|
+
end
|
141
|
+
|
109
142
|
|
110
143
|
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.8
|
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-
|
11
|
+
date: 2015-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -117,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
117
117
|
requirements:
|
118
118
|
- - "~>"
|
119
119
|
- !ruby/object:Gem::Version
|
120
|
-
version:
|
120
|
+
version: 2.2.1
|
121
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
122
122
|
requirements:
|
123
123
|
- - ">="
|