sterile 1.0.22 → 1.0.24

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