st_tools 0.3.7 → 0.3.8
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 +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 
     | 
    
         
             
              - - ">="
         
     |