idn_ffi 0.1.1 → 0.1.2
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.
- data/lib/idn_ffi.rb +5 -1
- data/lib/idn_ffi/methods.rb +12 -29
- data/lib/idn_ffi/version.rb +1 -1
- metadata +66 -74
data/lib/idn_ffi.rb
CHANGED
@@ -3,7 +3,11 @@ require File.join(File.dirname(__FILE__), %w{ idn_ffi idn_lib } )
|
|
3
3
|
require File.join(File.dirname(__FILE__), %w{ idn_ffi methods } )
|
4
4
|
|
5
5
|
module IDNFFI
|
6
|
+
|
7
|
+
IDNA_ALLOW_UNASSIGNED = 0x0001 # Don't reject strings containing unassigned Unicode code points.
|
8
|
+
IDNA_USE_STD3_ASCII_RULES = 0x0002 # Validate strings according to STD3 rules (i.e., normal host name rules).
|
9
|
+
|
6
10
|
extend IDNFFI::Methods
|
7
11
|
|
8
12
|
class Error < Exception; end
|
9
|
-
end
|
13
|
+
end
|
data/lib/idn_ffi/methods.rb
CHANGED
@@ -1,14 +1,10 @@
|
|
1
1
|
module IDNFFI::Methods
|
2
2
|
|
3
|
-
|
4
|
-
IDNA_ALLOW_UNASSIGNED = 0x0001 # Don't reject strings containing unassigned Unicode code points.
|
5
|
-
IDNA_USE_STD3_ASCII_RULES = 0x0002 # Validate strings according to STD3 rules (i.e., normal host name rules).
|
6
|
-
|
7
|
-
def to_ascii(str, flags = IDNA_ALLOW_UNASSIGNED)
|
3
|
+
def to_ascii(str, flags = IDNFFI::IDNA_ALLOW_UNASSIGNED)
|
8
4
|
transform(:idna_to_ascii_8z, str, flags)
|
9
5
|
end
|
10
6
|
|
11
|
-
def to_unicode(str, flags = IDNA_ALLOW_UNASSIGNED)
|
7
|
+
def to_unicode(str, flags = IDNFFI::IDNA_ALLOW_UNASSIGNED)
|
12
8
|
transform(:idna_to_unicode_8z8z, str, flags)
|
13
9
|
end
|
14
10
|
|
@@ -16,29 +12,16 @@ private
|
|
16
12
|
|
17
13
|
UTF8 = "UTF-8"
|
18
14
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
result
|
30
|
-
end
|
31
|
-
else
|
32
|
-
def transform(method, str, flags)
|
33
|
-
return unless str
|
34
|
-
pointer = FFI::MemoryPointer.new :pointer
|
35
|
-
int = IDNFFI::Lib.send(method, str, pointer, flags)
|
36
|
-
raise IDNFFI::Error, "bad answer from libidn #{ind}, http://www.gnu.org/software/libidn/reference/libidn-idna.html#IDNA-SUCCESS:CAPS" if int != 0
|
37
|
-
strptr = pointer.read_pointer()
|
38
|
-
result = strptr.read_string()
|
39
|
-
pointer.free
|
40
|
-
result
|
41
|
-
end
|
15
|
+
def transform(method, str, flags)
|
16
|
+
return unless str
|
17
|
+
pointer = FFI::MemoryPointer.new :pointer
|
18
|
+
int = IDNFFI::Lib.send(method, str, pointer, flags)
|
19
|
+
raise IDNFFI::Error, "bad answer from libidn #{int}, http://www.gnu.org/software/libidn/reference/libidn-idna.html#IDNA-SUCCESS:CAPS" if int != 0
|
20
|
+
strptr = pointer.read_pointer()
|
21
|
+
result = strptr.read_string()
|
22
|
+
pointer.free
|
23
|
+
result.force_encoding(UTF8) if result.respond_to?(:force_encoding)
|
24
|
+
result
|
42
25
|
end
|
43
26
|
|
44
27
|
end
|
data/lib/idn_ffi/version.rb
CHANGED
metadata
CHANGED
@@ -1,75 +1,71 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: idn_ffi
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 1
|
10
|
-
version: 0.1.1
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Konstantin Makarchev
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
22
|
-
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
|
-
none: false
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 3
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
version: "0"
|
31
|
-
prerelease: false
|
32
|
-
type: :runtime
|
33
|
-
requirement: *id001
|
12
|
+
date: 2013-01-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
34
15
|
name: ffi
|
35
|
-
|
36
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
37
17
|
none: false
|
38
|
-
requirements:
|
39
|
-
- -
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
|
43
|
-
- 0
|
44
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
45
23
|
prerelease: false
|
46
|
-
|
47
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
48
31
|
name: rake
|
49
|
-
|
50
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
51
33
|
none: false
|
52
|
-
requirements:
|
53
|
-
- -
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
|
56
|
-
segments:
|
57
|
-
- 0
|
58
|
-
version: "0"
|
59
|
-
prerelease: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
60
38
|
type: :development
|
61
|
-
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
62
47
|
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
63
62
|
description: LibIdn FFI ruby binding
|
64
|
-
email:
|
63
|
+
email:
|
65
64
|
- kostya27@gmail.com
|
66
65
|
executables: []
|
67
|
-
|
68
66
|
extensions: []
|
69
|
-
|
70
67
|
extra_rdoc_files: []
|
71
|
-
|
72
|
-
files:
|
68
|
+
files:
|
73
69
|
- .gitignore
|
74
70
|
- Gemfile
|
75
71
|
- LICENSE
|
@@ -82,40 +78,36 @@ files:
|
|
82
78
|
- lib/idn_ffi/version.rb
|
83
79
|
- spec/idn_spec.rb
|
84
80
|
- spec/test_vectors.rb
|
85
|
-
has_rdoc: true
|
86
81
|
homepage: https://github.com/kostya/idn_ffi
|
87
82
|
licenses: []
|
88
|
-
|
89
83
|
post_install_message:
|
90
84
|
rdoc_options: []
|
91
|
-
|
92
|
-
require_paths:
|
85
|
+
require_paths:
|
93
86
|
- lib
|
94
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
88
|
none: false
|
96
|
-
requirements:
|
97
|
-
- -
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
|
100
|
-
segments:
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
segments:
|
101
94
|
- 0
|
102
|
-
|
103
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
|
+
hash: 515023181
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
97
|
none: false
|
105
|
-
requirements:
|
106
|
-
- -
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
|
109
|
-
segments:
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
segments:
|
110
103
|
- 0
|
111
|
-
|
104
|
+
hash: 515023181
|
112
105
|
requirements: []
|
113
|
-
|
114
106
|
rubyforge_project:
|
115
|
-
rubygems_version: 1.
|
107
|
+
rubygems_version: 1.8.24
|
116
108
|
signing_key:
|
117
109
|
specification_version: 3
|
118
110
|
summary: LibIdn FFI ruby binding
|
119
|
-
test_files:
|
111
|
+
test_files:
|
120
112
|
- spec/idn_spec.rb
|
121
113
|
- spec/test_vectors.rb
|