sterilizer 0.0.2 → 0.0.4
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 +7 -0
- data/LICENSE.txt +2 -2
- data/README.md +1 -1
- data/lib/sterilizer.rb +18 -10
- data/lib/sterilizer/version.rb +1 -1
- data/sterilizer.gemspec +8 -3
- metadata +17 -23
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c877d0188e4e6d0d2cfe0f7aed6a6316bc0e85a6
|
4
|
+
data.tar.gz: e78e306533dfde79007b08a56edc75c5830e2b5d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a2dd47a32400e430d9ff4ffc14c75705e0a5a2dcc44cf6428fc817996769055c9738507d6e6badb08fab6722213ed30b1185dd9a01e8922fceb166290d7c2c6b
|
7
|
+
data.tar.gz: cb750fd507c9f537279d50406b96fcce6428a2226a9e85cbf0d39afca520aaa6c691eab1c4c941a9b9c20b4dfbab412e886bc6008a0c10c34d64dbc49a5b9633
|
data/LICENSE.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2013
|
1
|
+
Copyright (c) 2013 aTech Media Limited.
|
2
2
|
|
3
3
|
MIT License
|
4
4
|
|
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
19
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
20
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
21
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Sterilizer
|
2
2
|
|
3
|
-
A simple module that extends a String, giving it a `sterilize!` method
|
3
|
+
A simple module that extends a String, giving it a `sterilize!` method to ensure the string is always valid UTF-8
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
data/lib/sterilizer.rb
CHANGED
@@ -5,13 +5,17 @@ module Sterilizer
|
|
5
5
|
def sterilize!
|
6
6
|
|
7
7
|
return self unless !!defined?(Encoding)
|
8
|
+
|
9
|
+
# return if valid encoding, simple encode it to UTF-8
|
10
|
+
return self.encode!(default_encoding, self.encoding, { :undef => :replace, :invalid => :replace }) if self.valid_encoding?
|
11
|
+
|
8
12
|
# return if encoding is valid and equal to default_internal
|
9
|
-
return self if
|
13
|
+
return self if valid_and_default?
|
10
14
|
|
11
15
|
# force to default encoding if valid when forced
|
12
|
-
return self.force_encoding(
|
16
|
+
return self.force_encoding(default_encoding) if valid_when_forced?
|
13
17
|
|
14
|
-
# At this point, we know the string is not valid encoding,
|
18
|
+
# At this point, we know the string is not valid encoding, if the encoding is UTF-8,
|
15
19
|
# we must try a different encoding that is valid before forcefully encoding to UTF-8
|
16
20
|
# Otherwise, the encoding type is non-default. If it is valid, encode it to UTF-8, otherwise
|
17
21
|
# find an alternative before forcefully encoding to UTF-8
|
@@ -22,7 +26,7 @@ module Sterilizer
|
|
22
26
|
force_encoding_with(non_default_encoding)
|
23
27
|
else
|
24
28
|
if valid_when_forced?(self.encoding)
|
25
|
-
self.encode!(
|
29
|
+
self.encode!(default_encoding, self.encoding, { :undef => :replace, :invalid => :replace})
|
26
30
|
else
|
27
31
|
alternative_encoding = find_a_valid_encoding(self.encoding)
|
28
32
|
force_encoding_with(alternative_encoding)
|
@@ -33,18 +37,18 @@ module Sterilizer
|
|
33
37
|
end
|
34
38
|
|
35
39
|
def encoding_is_default?
|
36
|
-
self.encoding ==
|
40
|
+
self.encoding == default_encoding
|
37
41
|
end
|
38
42
|
|
39
|
-
def
|
43
|
+
def valid_and_default?
|
40
44
|
self.valid_encoding? && encoding_is_default?
|
41
45
|
end
|
42
46
|
|
43
|
-
def valid_when_forced?(encoding =
|
47
|
+
def valid_when_forced?(encoding = default_encoding)
|
44
48
|
self.dup.force_encoding(encoding).valid_encoding?
|
45
49
|
end
|
46
50
|
|
47
|
-
def find_a_valid_encoding(ignoring = [
|
51
|
+
def find_a_valid_encoding(ignoring = [default_encoding], guessed_already = false)
|
48
52
|
# If we've already tried to guess the encoding, resort to picking one at random until valid
|
49
53
|
if guessed_already
|
50
54
|
provisional_encoding = Encoding.list.detect{ |encoding| !ignoring.include?(encoding) }
|
@@ -66,7 +70,11 @@ module Sterilizer
|
|
66
70
|
end
|
67
71
|
|
68
72
|
def force_encoding_with(encoding)
|
69
|
-
self.force_encoding(encoding).encode(
|
73
|
+
self.force_encoding(encoding).encode(default_encoding, :invalid => :replace, :undef => :replace)
|
74
|
+
end
|
75
|
+
|
76
|
+
def default_encoding
|
77
|
+
Encoding.default_internal || "UTF-8"
|
70
78
|
end
|
71
79
|
|
72
80
|
end
|
@@ -76,4 +84,4 @@ class String
|
|
76
84
|
def sterilize!
|
77
85
|
self.extend(Sterilizer).sterilize!
|
78
86
|
end
|
79
|
-
end
|
87
|
+
end
|
data/lib/sterilizer/version.rb
CHANGED
data/sterilizer.gemspec
CHANGED
@@ -6,16 +6,21 @@ require 'sterilizer/version'
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
7
|
gem.name = "sterilizer"
|
8
8
|
gem.version = Sterilizer::VERSION
|
9
|
-
gem.authors = ["
|
10
|
-
gem.email = ["
|
9
|
+
gem.authors = ["aTech Media"]
|
10
|
+
gem.email = ["hello@atechmedia.com"]
|
11
11
|
gem.description = %q{Guarantee a string}
|
12
|
-
gem.summary =
|
12
|
+
gem.summary = "Libraries to ensure strings are always valid UTF-8"
|
13
13
|
gem.homepage = ""
|
14
14
|
|
15
|
+
gem.license = 'MIT'
|
15
16
|
gem.files = `git ls-files`.split($/)
|
16
17
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
19
|
gem.require_paths = ["lib"]
|
20
|
+
gem.has_rdoc = false
|
21
|
+
|
22
|
+
gem.homepage = "http://github.com/atech/atech"
|
19
23
|
gem.add_dependency "rchardet19"
|
20
24
|
gem.add_development_dependency 'pry'
|
25
|
+
|
21
26
|
end
|
metadata
CHANGED
@@ -1,51 +1,46 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sterilizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.4
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
|
-
-
|
7
|
+
- aTech Media
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-07 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rchardet19
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: pry
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
description: Guarantee a string
|
47
42
|
email:
|
48
|
-
-
|
43
|
+
- hello@atechmedia.com
|
49
44
|
executables: []
|
50
45
|
extensions: []
|
51
46
|
extra_rdoc_files: []
|
@@ -58,29 +53,28 @@ files:
|
|
58
53
|
- lib/sterilizer.rb
|
59
54
|
- lib/sterilizer/version.rb
|
60
55
|
- sterilizer.gemspec
|
61
|
-
homepage:
|
62
|
-
licenses:
|
56
|
+
homepage: http://github.com/atech/atech
|
57
|
+
licenses:
|
58
|
+
- MIT
|
59
|
+
metadata: {}
|
63
60
|
post_install_message:
|
64
61
|
rdoc_options: []
|
65
62
|
require_paths:
|
66
63
|
- lib
|
67
64
|
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
65
|
requirements:
|
70
|
-
- -
|
66
|
+
- - '>='
|
71
67
|
- !ruby/object:Gem::Version
|
72
68
|
version: '0'
|
73
69
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
70
|
requirements:
|
76
|
-
- -
|
71
|
+
- - '>='
|
77
72
|
- !ruby/object:Gem::Version
|
78
73
|
version: '0'
|
79
74
|
requirements: []
|
80
75
|
rubyforge_project:
|
81
|
-
rubygems_version:
|
76
|
+
rubygems_version: 2.0.4
|
82
77
|
signing_key:
|
83
|
-
specification_version:
|
84
|
-
summary:
|
78
|
+
specification_version: 4
|
79
|
+
summary: Libraries to ensure strings are always valid UTF-8
|
85
80
|
test_files: []
|
86
|
-
has_rdoc:
|