grit_ext 0.6.2 → 0.8.0
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/.rspec +2 -0
- data/grit_ext.gemspec +8 -3
- data/lib/grit_ext.rb +12 -8
- data/lib/grit_ext/version.rb +1 -1
- data/spec/grit_ext_spec.rb +37 -0
- data/spec/spec_helper.rb +3 -0
- metadata +70 -13
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5c2db9ffa33d3eaa39a3e640b1c879e52e6c570b
|
4
|
+
data.tar.gz: 736042a74a29d727cbf26755843a7ac0fac2ba07
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 11a4e1e8c379994ad2fe9794c092710984cad0bd87b10ee12fa0c798a665cd533fc69fde81851a3c05d0d8af0314c75a15e6fe4c9333e4931a8b14bea735fb29
|
7
|
+
data.tar.gz: 3a59a6118d64ebf8dba01a3a6f5f168b7d6b9716a9cc290e76e03cfcffc9d1eda8792496132214ae5c5f3d0a1f145cf1ef08b7f5c57972533a4aeb541b868662
|
data/.rspec
ADDED
data/grit_ext.gemspec
CHANGED
@@ -4,9 +4,9 @@ require File.expand_path('../lib/grit_ext/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Saito"]
|
6
6
|
gem.email = ["saitowu@gmail.com"]
|
7
|
-
gem.description = %q{the grit's
|
8
|
-
gem.summary = %q{gives grit utf-8 support
|
9
|
-
gem.homepage = "
|
7
|
+
gem.description = %q{the grit's utf-8 support}
|
8
|
+
gem.summary = %q{gives grit utf-8 support}
|
9
|
+
gem.homepage = "https://github.com/saitowu/grit_ext"
|
10
10
|
|
11
11
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
12
12
|
gem.files = `git ls-files`.split("\n")
|
@@ -16,4 +16,9 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.version = GritExt.version
|
17
17
|
|
18
18
|
gem.add_dependency("charlock_holmes", "~> 0.6.9")
|
19
|
+
|
20
|
+
gem.add_development_dependency("rspec", "~> 2.11")
|
21
|
+
gem.add_development_dependency("grit", "~> 2.5")
|
22
|
+
gem.add_development_dependency("rake")
|
23
|
+
gem.add_development_dependency("pry")
|
19
24
|
end
|
data/lib/grit_ext.rb
CHANGED
@@ -18,20 +18,24 @@ module GritExt
|
|
18
18
|
|
19
19
|
# return message if message type is binary
|
20
20
|
detect = CharlockHolmes::EncodingDetector.detect(message)
|
21
|
-
return message if detect[:type] == :binary
|
21
|
+
return message.force_encoding("BINARY") if detect && detect[:type] == :binary
|
22
22
|
|
23
|
-
#
|
24
|
-
if detect[:encoding]
|
23
|
+
# encoding message to detect encoding
|
24
|
+
if detect && detect[:encoding]
|
25
25
|
message.force_encoding(detect[:encoding])
|
26
|
-
message.encode!("UTF-8", detect[:encoding], undef: :replace, replace: "", invalid: :replace)
|
27
26
|
end
|
28
27
|
|
29
|
-
#
|
30
|
-
message.
|
31
|
-
|
32
|
-
# Prevent app from crash cause of encoding errors
|
28
|
+
# encode and clean the bad chars
|
29
|
+
message.replace clean(message)
|
33
30
|
rescue
|
34
31
|
encoding = detect ? detect[:encoding] : "unknown"
|
35
32
|
"--broken encoding: #{encoding}"
|
36
33
|
end
|
34
|
+
|
35
|
+
private
|
36
|
+
def clean(message)
|
37
|
+
message.encode("UTF-16BE", :undef => :replace, :invalid => :replace, :replace => "")
|
38
|
+
.encode("UTF-8")
|
39
|
+
.gsub("\0".encode("UTF-8"), "")
|
40
|
+
end
|
37
41
|
end
|
data/lib/grit_ext/version.rb
CHANGED
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe GritExt do
|
6
|
+
describe :encode! do
|
7
|
+
it "should return nil if the message is nil" do
|
8
|
+
message = GritExt.encode! nil
|
9
|
+
message.should be_nil
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should return binary it self when message is binary" do
|
13
|
+
message = "\xFF\xD8\xFF\xE0"
|
14
|
+
encoded_message = GritExt.encode!(message)
|
15
|
+
encoded_message.bytes.to_a.should eql(message.bytes.to_a)
|
16
|
+
message.encoding.name.should eql("ASCII-8BIT")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "cleans up UTF-8 strings with invalid encoding" do
|
20
|
+
message = GritExt.encode!("yummy\xE2 \xF0\x9F\x8D\x94 \x9F\x8D\x94")
|
21
|
+
message.should eql("yummy 🍔 ")
|
22
|
+
message.encoding.name.should eql("UTF-8")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "encode string to UTF-8" do
|
26
|
+
message = GritExt.encode!("{foo \xC3 'bar'}")
|
27
|
+
message.should eql("{foo à 'bar'}")
|
28
|
+
message.encoding.name.should eql("UTF-8")
|
29
|
+
|
30
|
+
message = "我爱你".encode("GBK")
|
31
|
+
message.encoding.name.should eql("GBK")
|
32
|
+
GritExt.encode!(message)
|
33
|
+
message.should eql("我爱你")
|
34
|
+
message.encoding.name.should eql("UTF-8")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grit_ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.8.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Saito
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
11
|
+
date: 2013-03-20 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: charlock_holmes
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,12 +20,67 @@ dependencies:
|
|
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.6.9
|
30
|
-
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.11'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.11'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: grit
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.5'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.5'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pry
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: the grit's utf-8 support
|
31
84
|
email:
|
32
85
|
- saitowu@gmail.com
|
33
86
|
executables: []
|
@@ -35,6 +88,7 @@ extensions: []
|
|
35
88
|
extra_rdoc_files: []
|
36
89
|
files:
|
37
90
|
- .gitignore
|
91
|
+
- .rspec
|
38
92
|
- Gemfile
|
39
93
|
- LICENSE
|
40
94
|
- README.md
|
@@ -48,28 +102,31 @@ files:
|
|
48
102
|
- lib/grit_ext/tag.rb
|
49
103
|
- lib/grit_ext/tree.rb
|
50
104
|
- lib/grit_ext/version.rb
|
51
|
-
|
105
|
+
- spec/grit_ext_spec.rb
|
106
|
+
- spec/spec_helper.rb
|
107
|
+
homepage: https://github.com/saitowu/grit_ext
|
52
108
|
licenses: []
|
109
|
+
metadata: {}
|
53
110
|
post_install_message:
|
54
111
|
rdoc_options: []
|
55
112
|
require_paths:
|
56
113
|
- lib
|
57
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
115
|
requirements:
|
60
116
|
- - '>='
|
61
117
|
- !ruby/object:Gem::Version
|
62
118
|
version: '0'
|
63
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
-
none: false
|
65
120
|
requirements:
|
66
121
|
- - '>='
|
67
122
|
- !ruby/object:Gem::Version
|
68
123
|
version: '0'
|
69
124
|
requirements: []
|
70
125
|
rubyforge_project:
|
71
|
-
rubygems_version:
|
126
|
+
rubygems_version: 2.0.2
|
72
127
|
signing_key:
|
73
|
-
specification_version:
|
74
|
-
summary: gives grit utf-8 support
|
75
|
-
test_files:
|
128
|
+
specification_version: 4
|
129
|
+
summary: gives grit utf-8 support
|
130
|
+
test_files:
|
131
|
+
- spec/grit_ext_spec.rb
|
132
|
+
- spec/spec_helper.rb
|