string_tools 0.15.0 → 1.0.0

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
- SHA1:
3
- metadata.gz: 337a46e1015523315103711f4b61d556fc5cd71b
4
- data.tar.gz: 0e9327ad9c3387224ce1d63282691d3952b140b1
2
+ SHA256:
3
+ metadata.gz: 2512a1b983589c7d296ca42a9931209e01b5df52ca1c8e303886cade92c44e04
4
+ data.tar.gz: 3cea7ab525f3d9e0bf3630f22831634639a13b03cd8fb62a9895f48e59333a00
5
5
  SHA512:
6
- metadata.gz: 5650229f42d09b51761304d2e61f1706ff174d4b78da527af8376eb0a470b37ed4b578bcc678e500803496a43bcd3507adad640b63a596b8d46b3ccf7380936f
7
- data.tar.gz: '09742bdb78ef01ed2dc7b24969b18820268896b30d15c620be2c041768a11ceb69eeb3b7cdd2f37a5a7b339fa37c39c3458a15ebc81fd6d5538ede2ff465d8e9'
6
+ metadata.gz: 0abeee9ce1ea2830119b0c8e3c2d1949ceb85c9a78b50bf57d84eda95d29fa27f3257610292152b15c456ae952e5daf24968b5b48a585103164f4bc84da01674
7
+ data.tar.gz: 7e27bd1d98036d5340a2a53693ffaa832e0fd24f52365578f95114e7cadebc9da2dae5ca7ad71b2ceef64bb969424a0c2e0a27038d4a8bf1bebaf4eedd584c30
data/.drone.yml CHANGED
@@ -1,32 +1,46 @@
1
- build:
2
- test:
3
- image: abakpress/dind-testing
4
- pull: true
5
- privileged: true
6
- volumes:
7
- - /home/data/drone/images:/images
8
- - /home/data/drone/gems:/bundle
9
- - /home/data/drone/key_cache:/ssh_keys
10
- environment:
11
- - COMPOSE_FILE_EXT=drone
12
- - RUBY_IMAGE_TAG=2.2-latest
13
- commands:
14
- - wrapdocker docker -v
1
+ ---
2
+ kind: pipeline
3
+ type: docker
4
+ name: build
15
5
 
16
- - fetch-images
17
- --image whilp/ssh-agent
18
- --image abakpress/ruby-app:$RUBY_IMAGE_TAG
6
+ volumes:
7
+ - name: bundle
8
+ host:
9
+ path: /home/data/drone/gems
10
+ - name: rubygems
11
+ host:
12
+ path: /home/data/drone/rubygems
19
13
 
20
- - dip ssh add -T -v /ssh_keys -k /ssh_keys/id_rsa
21
- - dip provision
22
- - dip rspec
14
+ spec_step_common: &spec_step_common
15
+ pull: if-not-exists
16
+ volumes:
17
+ - name: bundle
18
+ path: /bundle
19
+ commands:
20
+ - rm -fr Gemfile.lock gemfiles/
21
+ - bundle install -j 5
22
+ - bundle exec appraisal install
23
+ - bundle exec appraisal bundle exec rspec
23
24
 
24
- release:
25
- image: abakpress/gem-publication
26
- pull: true
27
- when:
28
- event: push
29
- volumes:
30
- - /home/data/drone/rubygems:/root/.gem
31
- commands:
32
- - release-gem --public
25
+ steps:
26
+ - name: build on ruby2.4
27
+ image: abakpress/ruby-app:2.4-latest
28
+ environment:
29
+ TEST_DB_HOST: postgres
30
+ TEST_DB_NAME: docker
31
+ TEST_DB_USERNAME: postgres
32
+ BUNDLE_PATH: /bundle/2.4
33
+ <<: *spec_step_common
34
+
35
+ - name: release
36
+ image: abakpress/gem-publication:latest
37
+ pull: if-not-exists
38
+ when:
39
+ event: push
40
+ branch: master
41
+ status: success
42
+ volumes:
43
+ - name: rubygems
44
+ path: /root/.gem
45
+ commands:
46
+ - release-gem --public
data/Appraisals CHANGED
@@ -1,12 +1,4 @@
1
- appraise 'rails4.0' do
2
- gem 'actionpack', '~> 4.0.0'
3
- gem 'activesupport', '~> 4.0.0'
4
- end
5
-
6
- appraise 'rails4.1' do
7
- gem 'actionpack', '~> 4.1.0'
8
- gem 'activesupport', '~> 4.1.0'
9
- end
1
+ # frozen_string_literal: true
10
2
 
11
3
  appraise 'rails4.2' do
12
4
  gem 'actionpack', '~> 4.2.0'
data/CHANGELOG.md CHANGED
@@ -1,4 +1,13 @@
1
- # v0.15.0
1
+ # v1.0.0
2
+
3
+ * 2023-06-15 [503fce2](../../commit/503fce2) - __(Andrew N. Shalaev)__ Release v1.0.0
4
+ * 2023-06-15 [8e9fa48](../../commit/8e9fa48) - __(Andrew N. Shalaev)__ fix: convert to_utf8 correctly, without hidding errors
5
+ https://jira.railsc.ru/browse/BPC-22244
6
+
7
+ * 2023-06-15 [9bc5cf5](../../commit/9bc5cf5) - __(Andrew N. Shalaev)__ fix: up test env
8
+ * 2021-07-16 [8a3bf46](../../commit/8a3bf46) - __(Andrew N. Shalaev)__ Release v0.16.0
9
+ * 2021-07-16 [5784a91](../../commit/5784a91) - __(Andrew N. Shalaev)__ feature: add support for ruby v2.4
10
+ https://jira.railsc.ru/browse/BPC-19154
2
11
 
3
12
  * 2020-05-13 [19cb127](../../commit/19cb127) - __(TamarinEA)__ Release 0.15.0
4
13
  * 2020-04-03 [e63c121](../../commit/e63c121) - __(Mikhail Nelaev)__ feature: optionally turn off uri normalization
@@ -87,6 +96,16 @@ https://jira.railsc.ru/browse/PC4-16353
87
96
  # v3.0.1
88
97
 
89
98
 
99
+ # v0.16.0
100
+
101
+ * 2021-07-16 [5784a91](../../commit/5784a91) - __(Andrew N. Shalaev)__ feature: add support for ruby v2.4
102
+ https://jira.railsc.ru/browse/BPC-19154
103
+
104
+ # v0.15.0
105
+
106
+ * 2020-04-03 [e63c121](../../commit/e63c121) - __(Mikhail Nelaev)__ feature: optionally turn off uri normalization
107
+ https://jira.railsc.ru/browse/GOODS-2219
108
+
90
109
  # v0.14.0
91
110
 
92
111
  * 2019-09-23 [f495195](../../commit/f495195) - __(TamarinEA)__ feature: use nokogiri for strip tags
data/Gemfile CHANGED
@@ -1,4 +1,7 @@
1
+ # frozen_string_literal: true
1
2
  source 'https://rubygems.org'
2
3
 
3
4
  # Specify your gem's dependencies in string_tools.gemspec
4
5
  gemspec
6
+
7
+ gem 'actionpack', '~> 4.2.0', require: false
data/Rakefile CHANGED
@@ -1 +1,2 @@
1
+ # frozen_string_literal: true
1
2
  require "bundler/gem_tasks"
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'string_tools'
data/dip.yml CHANGED
@@ -1,8 +1,8 @@
1
1
  version: '1'
2
2
 
3
3
  environment:
4
- DOCKER_RUBY_VERSION: 2.2
5
- RUBY_IMAGE_TAG: 2.2-latest
4
+ DOCKER_RUBY_VERSION: 2.4
5
+ RUBY_IMAGE_TAG: 2.4-latest
6
6
  COMPOSE_FILE_EXT: development
7
7
  RAILS_ENV: test
8
8
 
@@ -33,9 +33,10 @@ interaction:
33
33
 
34
34
  clean:
35
35
  service: app
36
- command: rm -f Gemfile.lock gemfiles/*.gemfile.*
36
+ command: rm -rf Gemfile.lock gemfiles
37
37
 
38
38
  provision:
39
39
  - docker volume create --name bundler_data
40
+ - dip clean
40
41
  - dip bundle install
41
42
  - dip appraisal install
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'rchardet19'
2
3
  require 'addressable/uri'
3
4
  require 'active_support/core_ext/module'
@@ -154,7 +155,7 @@ class String
154
155
  end
155
156
  end
156
157
 
157
- WIN_1251_ENCODING = 'windows-1251'.freeze
158
+ WIN_1251_ENCODING = 'windows-1251'
158
159
  # shorthand
159
160
  def detect_encoding
160
161
  e = ::CharDet.detect(self)["encoding"]
@@ -162,32 +163,21 @@ class String
162
163
  e
163
164
  end
164
165
 
165
- def to_utf8!
166
- self.replace(self.to_utf8)
167
- end
168
-
169
- def to_utf8
170
- # и так utf
171
- return self if is_utf8?
166
+ def to_utf8(inplace = false)
167
+ return self if valid_encoding? && is_utf8?
172
168
 
173
- enc = detect_encoding
169
+ source_enc = detect_encoding
170
+ return '' unless source_enc
174
171
 
175
- # если utf или английские буквы, то тоже ок
176
- return self if ['utf-8', 'ascii'].include?(enc)
177
-
178
- # если неизвестная каша, то возвращаем пустую строку
179
- return '' if enc.nil?
172
+ encode_utf8(source_enc, inplace)
173
+ end
180
174
 
181
- # иначе пытаемся перекодировать
182
- encode 'utf-8', enc, :undef => :replace, :invalid => :replace
183
- rescue
184
- ''
175
+ def to_utf8!
176
+ to_utf8(true)
185
177
  end
186
178
 
187
179
  def to_cp1251
188
- encode 'cp1251', :undef => :replace, :invalid => :replace
189
- rescue
190
- ''
180
+ encode 'cp1251', undef: :replace, invalid: :replace, replace: ''
191
181
  end
192
182
 
193
183
  def to_cp1251!
@@ -229,6 +219,12 @@ class String
229
219
 
230
220
  private
231
221
 
222
+ def encode_utf8(source_enc, inplace = false)
223
+ args = ['utf-8', source_enc, undef: :replace, invalid: :replace, replace: '']
224
+
225
+ inplace ? encode!(*args) : encode(*args)
226
+ end
227
+
232
228
  def surround_with_ansi(ascii_seq)
233
229
  "#{ascii_seq}#{protect_escape_of(ascii_seq)}#{ANSI_CLEAR}"
234
230
  end
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+ # frozen_string_literal: true
2
3
  require 'nokogiri'
3
4
  require 'addressable/uri'
4
5
  require 'simpleidn'
@@ -44,7 +45,7 @@ module StringTools
44
45
  doc = Nokogiri::HTML::DocumentFragment.parse(html)
45
46
  scrubber = LinksRemoveScrubber.new(options)
46
47
 
47
- doc.css('a'.freeze).each { |node| scrubber.call node }
48
+ doc.css('a').each { |node| scrubber.call node }
48
49
 
49
50
  if scrubber.done_changes?
50
51
  doc.children.map { |node| node.serialize HTML_SERIALIZE_OPTIONS }.join
@@ -78,7 +79,7 @@ module StringTools
78
79
  end
79
80
 
80
81
  def whitelisted?(domain)
81
- host_parts = domain.split('.'.freeze)
82
+ host_parts = domain.split('.')
82
83
  host = host_parts[-1] # com, ru ...
83
84
  (host_parts.length - 2).downto(0) do |i|
84
85
  subdomain = host_parts[i]
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module StringTools
2
3
  class String
3
4
  TRUE_VALUES = %w(1 t T true TRUE on ON).to_set
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module StringTools
2
- VERSION = '0.15.0'.freeze
3
+ VERSION = '1.0.0'
3
4
  end
data/lib/string_tools.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+ # frozen_string_literal: true
2
3
  require 'string_tools/version'
3
4
  require 'ru_propisju'
4
5
  require 'sanitize'
@@ -186,10 +187,10 @@ module StringTools
186
187
  def call(env)
187
188
  node = env[:node]
188
189
  case node.name
189
- when 'a'.freeze
190
- normalize_link node, 'href'.freeze
191
- when 'img'.freeze
192
- normalize_link node, 'src'.freeze
190
+ when 'a'
191
+ normalize_link node, 'href'
192
+ when 'img'
193
+ normalize_link node, 'src'
193
194
  end
194
195
  end
195
196
 
@@ -229,7 +230,7 @@ module StringTools
229
230
  # Сумма в рублях прописью. Кол-во копеек выводится всегда. Первая буква заглавная
230
231
  def rublej_propisju(amount)
231
232
  kop = (amount.divmod(1)[1]*100).round
232
- result = RuPropisju.rublej(amount.to_i).capitalize
233
+ result = RuPropisju.rublej(amount.to_i).capitalize.dup
233
234
  result << " %.2d " % kop
234
235
  result << RuPropisju.choose_plural(kop, 'копейка', 'копейки', 'копеек')
235
236
  end
data/string_tools.gemspec CHANGED
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+ # frozen_string_literal: true
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'string_tools/version'
@@ -19,8 +20,8 @@ Gem::Specification.new do |spec|
19
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
21
  spec.require_paths = ['lib']
21
22
 
22
- spec.add_runtime_dependency 'actionpack', '>= 3.1.12'
23
- spec.add_runtime_dependency 'activesupport', '>= 3.1.12'
23
+ spec.add_runtime_dependency 'actionpack', '>= 4.2.0'
24
+ spec.add_runtime_dependency 'activesupport', '>= 4.2.0'
24
25
  spec.add_runtime_dependency 'rchardet19', '~> 1.3.5'
25
26
  spec.add_runtime_dependency 'addressable', '>= 2.3.2'
26
27
  spec.add_runtime_dependency 'ru_propisju', '>= 2.1.4'
@@ -28,7 +29,7 @@ Gem::Specification.new do |spec|
28
29
  spec.add_runtime_dependency 'nokogiri'
29
30
  spec.add_runtime_dependency 'simpleidn', '>= 0.0.5'
30
31
 
31
- spec.add_development_dependency 'bundler'
32
+ spec.add_development_dependency 'bundler', '~> 1.17.3'
32
33
  spec.add_development_dependency 'rake'
33
34
  spec.add_development_dependency 'rspec', '>= 3.4'
34
35
  spec.add_development_dependency 'appraisal', '>= 1.0.2'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: string_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey D.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-13 00:00:00.000000000 Z
11
+ date: 2023-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 3.1.12
19
+ version: 4.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 3.1.12
26
+ version: 4.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 3.1.12
33
+ version: 4.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 3.1.12
40
+ version: 4.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rchardet19
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -126,16 +126,16 @@ dependencies:
126
126
  name: bundler
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - ">="
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0'
131
+ version: 1.17.3
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - ">="
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '0'
138
+ version: 1.17.3
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rake
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -252,8 +252,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
252
  - !ruby/object:Gem::Version
253
253
  version: '0'
254
254
  requirements: []
255
- rubyforge_project:
256
- rubygems_version: 2.6.1
255
+ rubygems_version: 3.0.3
257
256
  signing_key:
258
257
  specification_version: 4
259
258
  summary: String Tools