sterile 1.0.22 → 1.0.24

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
  SHA256:
3
- metadata.gz: 69471b3cdff84cde4e92bca955edcc4b090be82abee6a890f6f452a1ec6b13c8
4
- data.tar.gz: 421a5a328e53452a47dbcd4979dd63b3ef6c70e7f63001dd1191250f6b4f192d
3
+ metadata.gz: 6609d623434f38f1a8c5fc7955679b834150bfc370855be55bcc74767bed32a6
4
+ data.tar.gz: eb41eeb0a06250a0113eb92f8b49568db1a52c57e9f125a0105b279d3c50ccb6
5
5
  SHA512:
6
- metadata.gz: 1c9949930230ce8425fe65970f70e3e26e4afd4e0a4e56c0f31a1edd890397a6732f0faa34557330237177f4dca3305db1af50d5d93496e24fc9bad620b1e761
7
- data.tar.gz: 04b3a2f2e08844b53abf9727630f3de56938499ccf337b562e4487026639efd5ebb5a33e867b52b4f6ef7ade02ed45728b0a0991f2b6d7f9701c91a14c44a9c8
6
+ metadata.gz: 8002656ad9b4b7006ee57fe64e69c0cd71995dfe764f7ac6a12ae2f1d5d0a8f3244245b6ec80d46307d5f007e1aa8cf5269102433490fb326271b11d566da4a2
7
+ data.tar.gz: 4b0748aaa375dc18f7150818feb90d81b591ed93cc13b93df05cc3bcdf4074683df240d4ef35de3963bf3a1b7908c5242517519b920ee5311e681c45ac6abd03
@@ -0,0 +1,26 @@
1
+ name: test
2
+
3
+ on:
4
+ push:
5
+ paths-ignore:
6
+ - '**.md'
7
+ pull_request:
8
+ paths-ignore:
9
+ - '**.md'
10
+ workflow_dispatch:
11
+
12
+ jobs:
13
+ test:
14
+ strategy:
15
+ max-parallel: 3
16
+ matrix:
17
+ os: [ubuntu, macos]
18
+ ruby-version: [head, 3.0, 2.7, 2.5]
19
+ runs-on: ${{ matrix.os }}-latest
20
+ steps:
21
+ - uses: actions/checkout@v2
22
+ - uses: ruby/setup-ruby@v1
23
+ with:
24
+ ruby-version: ${{ matrix.ruby-version }}
25
+ - run: bundle install
26
+ - run: bundle exec rake test
data/.gitignore CHANGED
@@ -5,5 +5,4 @@ doc/*
5
5
  .bundle
6
6
  .DS_Store
7
7
  make
8
- test
9
- vendor
8
+ vendor
data/.idea/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Editor-based HTTP Client requests
5
+ /httpRequests/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
data/.idea/misc.xml ADDED
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-2.5.9" project-jdk-type="RUBY_SDK" />
4
+ </project>
data/.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/sterile.iml" filepath="$PROJECT_DIR$/.idea/sterile.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
data/.idea/sterile.iml ADDED
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="RUBY_MODULE" version="4">
3
+ <component name="ModuleRunConfigurationManager">
4
+ <shared />
5
+ </component>
6
+ <component name="NewModuleRootManager">
7
+ <content url="file://$MODULE_DIR$">
8
+ <sourceFolder url="file://$MODULE_DIR$/features" isTestSource="true" />
9
+ <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
10
+ <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
11
+ </content>
12
+ <orderEntry type="inheritedJdk" />
13
+ <orderEntry type="sourceFolder" forTests="false" />
14
+ </component>
15
+ </module>
data/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ </component>
6
+ </project>
data/Gemfile CHANGED
@@ -1,3 +1,7 @@
1
1
  source "https://rubygems.org"
2
2
  gemspec
3
3
 
4
+ group :development, :test do
5
+ gem "minitest"
6
+ gem "rake"
7
+ end
data/Gemfile.lock CHANGED
@@ -1,21 +1,25 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sterile (1.0.17)
5
- nokogiri (>= 1.10.8)
4
+ sterile (1.0.24)
5
+ nokogiri (>= 1.11.7)
6
6
 
7
7
  GEM
8
- remote: http://rubygems.org/
8
+ remote: https://rubygems.org/
9
9
  specs:
10
- mini_portile2 (2.4.0)
11
- nokogiri (1.10.10)
12
- mini_portile2 (~> 2.4.0)
10
+ minitest (5.18.0)
11
+ nokogiri (1.14.3-arm64-darwin)
12
+ racc (~> 1.4)
13
+ racc (1.6.2)
14
+ rake (13.0.6)
13
15
 
14
16
  PLATFORMS
15
- ruby
17
+ arm64-darwin-22
16
18
 
17
19
  DEPENDENCIES
20
+ minitest
21
+ rake
18
22
  sterile!
19
23
 
20
24
  BUNDLED WITH
21
- 1.17.3
25
+ 2.4.6
data/README.markdown CHANGED
@@ -1,4 +1,4 @@
1
- Sterile
1
+ Sterile ![test](https://github.com/pbhogan/sterile/actions/workflows/test.yml/badge.svg)
2
2
  =======
3
3
 
4
4
  Sterilize your strings! Transliterate, generate slugs, smart format, strip tags, encode/decode entities and more.
@@ -107,4 +107,4 @@ License
107
107
  -------
108
108
 
109
109
  Copyright (c) 2011 Patrick Hogan, released under the MIT License.
110
- http://www.opensource.org/licenses/mit-license
110
+ http://www.opensource.org/licenses/mit-license
data/Rakefile CHANGED
@@ -1,7 +1,14 @@
1
1
  require 'bundler'
2
+ require 'rake/testtask'
3
+
2
4
  Bundler::GemHelper.install_tasks
3
5
 
4
- require 'rake/testtask'
5
6
  Rake::TestTask.new do |t|
6
- t.pattern = "test/test_*.rb"
7
+ t.libs << 'test'
8
+ end
9
+ task default: :test
10
+
11
+ # Watch rb files, run tests whenever something changes. Requires entr
12
+ task :watch do
13
+ sh "find . -name '*.rb' | entr -c rake"
7
14
  end
@@ -39,7 +39,7 @@ module Sterile
39
39
  [/(\s|\A|\(|\[)"(?!\s)/, "\\1“\\2"],
40
40
  [/"(\s|\S|\Z)/, "”\\1"],
41
41
  [/\'([\s.]|\Z)/, "’\\1"],
42
- [/(\d+)x(\d+)/, "\\1×\\2"],
42
+ [/(\b[1-9]\d*|0)x([1-9]\d*|0\b)/, "\\1×\\2"],
43
43
  [/([a-z])'(t|d|s|ll|re|ve)(\b)/i, "\\1’\\2\\3"],
44
44
  ]
45
45
  end
@@ -24,7 +24,8 @@ module Sterile
24
24
  # their Unicode counterparts.
25
25
  #
26
26
  def decode_entities(string)
27
- string.gsub!(/&#(\d{1,4});/) { [$1.to_i].pack("U") }
27
+ string.gsub!(/&#x([a-zA-Z0-9]{1,7});/) { [$1.to_i(16)].pack("U") }
28
+ string.gsub!(/&#(\d{1,7});/) { [$1.to_i].pack("U") }
28
29
  string.gsub(/&([a-zA-Z0-9]+);/) do
29
30
  codepoint = html_entities_data[$1]
30
31
  codepoint ? [codepoint].pack("U") : $&
@@ -46,3 +47,4 @@ module Sterile
46
47
  end # class << self
47
48
 
48
49
  end # module Sterile
50
+
@@ -1,6 +1,6 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  module Sterile
4
- VERSION = "1.0.22"
4
+ VERSION = "1.0.24"
5
5
  end
6
6
 
data/sterile.gemspec CHANGED
@@ -14,11 +14,10 @@ Gem::Specification.new do |s|
14
14
  s.summary = %q{Sterilize your strings! Transliterate, generate slugs, smart format, strip tags, encode/decode entities and more.}
15
15
  s.description = s.summary
16
16
 
17
- s.add_dependency("nokogiri", ">= 1.11.0")
17
+ s.add_dependency("nokogiri", ">= 1.11.7")
18
18
 
19
19
  s.files = `git ls-files`.split("\n")
20
20
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
21
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
22
  s.require_paths = ["lib"]
23
23
  end
24
-
@@ -0,0 +1,2 @@
1
+ require "minitest/autorun"
2
+ require "sterile"
@@ -0,0 +1,83 @@
1
+ require "test_helper"
2
+
3
+ class TestSterile < Minitest::Test
4
+ def test_decode_entities
5
+ assert_equal "“Hey” you", Sterile.decode_entities("&ldquo;Hey&rdquo; you")
6
+
7
+ # try all variants
8
+ assert_equal "°", Sterile.decode_entities("&deg;")
9
+ assert_equal "°", Sterile.decode_entities("&#176;")
10
+ assert_equal "°", Sterile.decode_entities("&#000176;")
11
+ assert_equal "°", Sterile.decode_entities("&#x000b0;")
12
+ assert_equal "°", Sterile.decode_entities("&#x000B0;")
13
+ end
14
+
15
+ def test_encode_entities
16
+ assert_equal "&ldquo;Hey&rdquo; you", Sterile.encode_entities("“Hey” you")
17
+ end
18
+
19
+ def test_gsub_tags
20
+ assert_equal "A<i>B</i>C", Sterile.gsub_tags("a<i>b</i>c", &:upcase)
21
+ end
22
+
23
+ def test_plain_format
24
+ s = "&#169; &copy; &#8482; &trade;"
25
+ assert_equal "(c) (c) (tm) (tm)", Sterile.plain_format(s)
26
+ end
27
+
28
+ def test_plain_format_tags
29
+ s = '<i x="&copy;">&copy;</i>'
30
+ assert_equal '<i x="&copy;">(c)</i>', Sterile.plain_format_tags(s)
31
+ end
32
+
33
+ def test_scan_tags
34
+ text = []
35
+ Sterile.scan_tags("a<i>b</i>c") { |i| text << i }
36
+ assert_equal %w[a b c], text
37
+ end
38
+
39
+ def test_sluggerize
40
+ assert_equal "hello-world", Sterile.sluggerize("Hello world!")
41
+ end
42
+
43
+ def test_smart_format
44
+ s = "\"He said, 'Away, Drake!'\""
45
+ assert_equal "“He said, ‘Away, Drake!’”", Sterile.smart_format(s)
46
+ end
47
+
48
+ def test_smart_format_times
49
+ assert_equal "1×1", Sterile.smart_format("1x1")
50
+ assert_equal "0×1", Sterile.smart_format("0x1")
51
+ assert_equal "1×0", Sterile.smart_format("1x0")
52
+ assert_equal "12×21", Sterile.smart_format("12x21")
53
+ assert_equal "01x1", Sterile.smart_format("01x1")
54
+ assert_equal "1x01", Sterile.smart_format("1x01")
55
+ end
56
+
57
+ def test_smart_format_tags
58
+ # ?
59
+ end
60
+
61
+ def test_sterilize
62
+ assert_equal "nasty", Sterile.sterilize("<b>nåsty</b>")
63
+ end
64
+
65
+ def test_strip_tags
66
+ s = 'Visit <a href="http://example.com">site!</a>'
67
+ assert_equal "Visit site!", Sterile.strip_tags(s)
68
+ end
69
+
70
+ def test_titlecase
71
+ s = "Q&A: 'That's what happens'"
72
+ assert_equal "Q&A: 'That's What Happens'", Sterile.titlecase(s)
73
+ end
74
+
75
+ def test_transliterate
76
+ assert_equal "yucky", Sterile.transliterate("ýůçký")
77
+ end
78
+
79
+ def test_trim_whitespace
80
+ assert_equal "Hello world!", Sterile.trim_whitespace(" Hello world! ")
81
+ end
82
+ end
83
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sterile
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.22
4
+ version: 1.0.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Hogan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-12 00:00:00.000000000 Z
11
+ date: 2023-04-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.11.0
19
+ version: 1.11.7
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: 1.11.0
26
+ version: 1.11.7
27
27
  description: Sterilize your strings! Transliterate, generate slugs, smart format,
28
28
  strip tags, encode/decode entities and more.
29
29
  email:
@@ -32,9 +32,13 @@ executables: []
32
32
  extensions: []
33
33
  extra_rdoc_files: []
34
34
  files:
35
+ - ".github/workflows/test.yml"
35
36
  - ".gitignore"
36
- - ".ruby-gemset"
37
- - ".ruby-version"
37
+ - ".idea/.gitignore"
38
+ - ".idea/misc.xml"
39
+ - ".idea/modules.xml"
40
+ - ".idea/sterile.iml"
41
+ - ".idea/vcs.xml"
38
42
  - ".yardopts"
39
43
  - Gemfile
40
44
  - Gemfile.lock
@@ -56,6 +60,8 @@ files:
56
60
  - lib/sterile/version.rb
57
61
  - sterile
58
62
  - sterile.gemspec
63
+ - test/test_helper.rb
64
+ - test/test_sterile.rb
59
65
  homepage: https://github.com/pbhogan/sterile
60
66
  licenses:
61
67
  - MIT
@@ -75,9 +81,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
81
  - !ruby/object:Gem::Version
76
82
  version: '0'
77
83
  requirements: []
78
- rubygems_version: 3.0.8
84
+ rubygems_version: 3.4.6
79
85
  signing_key:
80
86
  specification_version: 4
81
87
  summary: Sterilize your strings! Transliterate, generate slugs, smart format, strip
82
88
  tags, encode/decode entities and more.
83
- test_files: []
89
+ test_files:
90
+ - test/test_helper.rb
91
+ - test/test_sterile.rb
data/.ruby-gemset DELETED
@@ -1,2 +0,0 @@
1
- sterile
2
-
data/.ruby-version DELETED
@@ -1,3 +0,0 @@
1
- 2.4.9
2
-
3
-