ffi-icu 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/ffi-icu/lib.rb +33 -2
- data/lib/ffi-icu/version.rb +1 -1
- metadata +2 -2
data/lib/ffi-icu/lib.rb
CHANGED
@@ -52,7 +52,6 @@ module ICU
|
|
52
52
|
raise LoadError, "no idea how to load ICU on #{ICU.platform.inspect}, patches appreciated! (#{ex.message})"
|
53
53
|
end
|
54
54
|
|
55
|
-
# And last figure out the version we just loaded
|
56
55
|
icu_version(libs)
|
57
56
|
end
|
58
57
|
|
@@ -73,6 +72,38 @@ module ICU
|
|
73
72
|
version
|
74
73
|
end
|
75
74
|
|
75
|
+
def self.figure_suffix(version)
|
76
|
+
# For some reason libicu prepends its exported functions with version information,
|
77
|
+
# which differs across all platforms. Some examples:
|
78
|
+
#
|
79
|
+
# OSX:
|
80
|
+
# u_errorName
|
81
|
+
#
|
82
|
+
# CentOS 5
|
83
|
+
# u_errorName_3_6
|
84
|
+
#
|
85
|
+
# Fedora 14 and Windows (using mingw)
|
86
|
+
# u_errorName_44
|
87
|
+
#
|
88
|
+
# So we need to figure out which one it is.
|
89
|
+
|
90
|
+
# Here are the possible suffixes
|
91
|
+
suffixes = [""]
|
92
|
+
if version
|
93
|
+
suffixes << "_#{version}" << "_#{version[0].chr}_#{version[1].chr}"
|
94
|
+
end
|
95
|
+
|
96
|
+
# Try to find the u_errorName function using the possible suffixes
|
97
|
+
suffixes.find do |suffix|
|
98
|
+
function_name = "u_errorName#{suffix}"
|
99
|
+
function_names(function_name, nil).find do |fname|
|
100
|
+
ffi_libraries.find do |lib|
|
101
|
+
lib.find_function(fname)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
76
107
|
def self.check_error
|
77
108
|
ptr = FFI::MemoryPointer.new(:int)
|
78
109
|
ret = yield(ptr)
|
@@ -111,7 +142,7 @@ module ICU
|
|
111
142
|
end
|
112
143
|
|
113
144
|
version = load_icu
|
114
|
-
suffix = version
|
145
|
+
suffix = figure_suffix(version)
|
115
146
|
|
116
147
|
attach_function :u_errorName, "u_errorName#{suffix}", [:int], :string
|
117
148
|
attach_function :uenum_count, "uenum_count#{suffix}", [:pointer, :pointer], :int
|
data/lib/ffi-icu/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi-icu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -117,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
117
|
version: '0'
|
118
118
|
requirements: []
|
119
119
|
rubyforge_project:
|
120
|
-
rubygems_version: 1.8.
|
120
|
+
rubygems_version: 1.8.24
|
121
121
|
signing_key:
|
122
122
|
specification_version: 3
|
123
123
|
summary: Simple Ruby FFI wrappers for things I need from ICU.
|