nokolexbor 0.2.5 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/nokolexbor/CMakeLists.txt +7 -4
- data/ext/nokolexbor/config.h.cmake.in +2 -0
- data/ext/nokolexbor/extconf.rb +47 -25
- data/ext/nokolexbor/libxml/SAX2.h +4 -4
- data/ext/nokolexbor/libxml/chvalid.h +21 -21
- data/ext/nokolexbor/libxml/dict.h +13 -13
- data/ext/nokolexbor/libxml/globals.h +202 -202
- data/ext/nokolexbor/libxml/hash.h +25 -25
- data/ext/nokolexbor/libxml/parser.h +5 -5
- data/ext/nokolexbor/libxml/parserInternals.h +4 -4
- data/ext/nokolexbor/libxml/pattern.h +14 -14
- data/ext/nokolexbor/libxml/threads.h +15 -15
- data/ext/nokolexbor/libxml/tree.h +5 -5
- data/ext/nokolexbor/libxml/xmlerror.h +5 -5
- data/ext/nokolexbor/libxml/xmlmemory.h +16 -16
- data/ext/nokolexbor/libxml/xmlstring.h +30 -30
- data/ext/nokolexbor/libxml/xpath.h +43 -43
- data/ext/nokolexbor/libxml/xpathInternals.h +128 -128
- data/ext/nokolexbor/memory.c +6 -6
- data/ext/nokolexbor/nl_cdata.c +44 -0
- data/ext/nokolexbor/nl_comment.c +44 -0
- data/ext/nokolexbor/nl_document.c +23 -9
- data/ext/nokolexbor/nl_node.c +191 -178
- data/ext/nokolexbor/nl_node_set.c +38 -73
- data/ext/nokolexbor/nl_text.c +44 -0
- data/ext/nokolexbor/nl_xpath_context.c +33 -42
- data/ext/nokolexbor/nokolexbor.c +7 -3
- data/ext/nokolexbor/nokolexbor.h +9 -7
- data/ext/nokolexbor/private/buf.h +1 -1
- data/ext/nokolexbor/private/error.h +3 -3
- data/ext/nokolexbor/xml_SAX2.c +8 -8
- data/ext/nokolexbor/xml_buf.c +19 -19
- data/ext/nokolexbor/xml_chvalid.c +25 -25
- data/ext/nokolexbor/xml_dict.c +69 -69
- data/ext/nokolexbor/xml_encoding.c +2 -2
- data/ext/nokolexbor/xml_error.c +51 -51
- data/ext/nokolexbor/xml_globals.c +329 -329
- data/ext/nokolexbor/xml_hash.c +131 -131
- data/ext/nokolexbor/xml_memory.c +25 -25
- data/ext/nokolexbor/xml_parser.c +3 -3
- data/ext/nokolexbor/xml_parserInternals.c +15 -15
- data/ext/nokolexbor/xml_pattern.c +103 -103
- data/ext/nokolexbor/xml_string.c +93 -93
- data/ext/nokolexbor/xml_threads.c +61 -61
- data/ext/nokolexbor/xml_tree.c +12 -12
- data/ext/nokolexbor/xml_xpath.c +1194 -1203
- data/lib/nokolexbor/document.rb +92 -1
- data/lib/nokolexbor/node.rb +64 -0
- data/lib/nokolexbor/node_set.rb +6 -5
- data/lib/nokolexbor/version.rb +1 -1
- data/lib/nokolexbor.rb +21 -1
- data/patches/0001-lexbor-support-text-pseudo-element.patch +1 -1
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6bfa3062e8718581cd8aabef75f0084a6626bd90301c9db4957ee975215edec1
|
4
|
+
data.tar.gz: 243f5c217c85750f63bfc0dcb8af575c019d3f2fd920f41769c0affc8a219802
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e66b390ef696ed5cafa480065e8ac8fc66ce98d86a7cb15f2f59d8acb7df21381942e5fe6f0244e3b9c7bf54787131c5241a49faeaba328eb49e65af0ac3216c
|
7
|
+
data.tar.gz: d266e2a7c49a202aec4112667807158b54878cc014b42fc32492fc0977c06db76b1a5ded827d9810f2e7966ba3e5068fe54ab89915a4c56e499181ddc190b6d7
|
@@ -1,8 +1,11 @@
|
|
1
|
-
cmake_minimum_required(VERSION
|
1
|
+
cmake_minimum_required(VERSION 2.8.12)
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
IF(CMAKE_VERSION VERSION_LESS "3.0")
|
4
|
+
project(libxml2)
|
5
|
+
ELSE()
|
6
|
+
cmake_policy(SET CMP0048 NEW)
|
7
|
+
project(libxml2 VERSION "2.11.0")
|
8
|
+
ENDIF()
|
6
9
|
|
7
10
|
include(CheckFunctionExists)
|
8
11
|
include(CheckIncludeFiles)
|
data/ext/nokolexbor/extconf.rb
CHANGED
@@ -1,21 +1,60 @@
|
|
1
1
|
require 'mkmf'
|
2
2
|
require 'timeout'
|
3
3
|
|
4
|
+
if ENV["CC"]
|
5
|
+
RbConfig::CONFIG["CC"] = RbConfig::MAKEFILE_CONFIG["CC"] = ENV["CC"]
|
6
|
+
end
|
7
|
+
|
8
|
+
# From: https://stackoverflow.com/questions/2108727
|
9
|
+
# Cross-platform way of finding an executable in the $PATH.
|
10
|
+
#
|
11
|
+
# which('ruby') #=> /usr/bin/ruby
|
12
|
+
def which(cmd)
|
13
|
+
exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
|
14
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
|
15
|
+
exts.each { |ext|
|
16
|
+
exe = File.join(path, "#{cmd}#{ext}")
|
17
|
+
return exe if File.executable? exe
|
18
|
+
}
|
19
|
+
end
|
20
|
+
return nil
|
21
|
+
end
|
22
|
+
|
4
23
|
cmake_flags = [ ENV["CMAKE_FLAGS"] ]
|
5
|
-
cmake_flags << "-
|
6
|
-
|
7
|
-
cmake_flags << "-
|
24
|
+
cmake_flags << "-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY"
|
25
|
+
# Set system name explicitly when cross-compiling
|
26
|
+
cmake_flags << "-DCMAKE_SYSTEM_NAME=Windows -DWIN32=1" if Gem.win_platform?
|
27
|
+
# On Windows, Ruby-DevKit is MSYS-based, so ensure to use MSYS Makefiles.
|
28
|
+
cmake_flags << "-G \"MSYS Makefiles\"" if Gem.win_platform? && !ENV['NOKOLEXBOR_CROSS_COMPILE']
|
29
|
+
|
30
|
+
if ENV['NOKOLEXBOR_CROSS_COMPILE']
|
31
|
+
# use the same toolchain for cross-compiling lexbor
|
32
|
+
['CC', 'CXX'].each do |env|
|
33
|
+
if RbConfig::CONFIG[env]
|
34
|
+
ENV[env] = RbConfig::CONFIG[env]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
{'RANLIB' => 'RANLIB', 'AR' => 'AR', 'LD' => 'LINKER'}.each do |env, cmake_opt|
|
38
|
+
if RbConfig::CONFIG[env]
|
39
|
+
cmake_flags << "-DCMAKE_#{cmake_opt}=#{which(RbConfig::CONFIG[env])}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
lexbor_cmake_flags = cmake_flags + ["-DLEXBOR_BUILD_TESTS_CPP=OFF"]
|
45
|
+
lexbor_cmake_flags << "-DLEXBOR_BUILD_SHARED=OFF"
|
46
|
+
lexbor_cmake_flags << "-DLEXBOR_BUILD_STATIC=ON"
|
8
47
|
|
9
48
|
if ENV['NOKOLEXBOR_DEBUG'] || ENV['NOKOLEXBOR_ASAN']
|
10
49
|
CONFIG["optflags"] = "-O0"
|
11
50
|
CONFIG["debugflags"] = "-ggdb3"
|
12
|
-
|
51
|
+
lexbor_cmake_flags << "-DLEXBOR_OPTIMIZATION_LEVEL='-O0 -g'"
|
13
52
|
end
|
14
53
|
|
15
54
|
if ENV['NOKOLEXBOR_ASAN']
|
16
55
|
$LDFLAGS << " -fsanitize=address"
|
17
56
|
$CFLAGS << " -fsanitize=address -DNOKOLEXBOR_ASAN"
|
18
|
-
|
57
|
+
lexbor_cmake_flags << "-DLEXBOR_BUILD_WITH_ASAN=ON"
|
19
58
|
end
|
20
59
|
|
21
60
|
append_cflags("-DLEXBOR_STATIC")
|
@@ -35,7 +74,7 @@ end
|
|
35
74
|
|
36
75
|
def self.run_cmake(timeout, args)
|
37
76
|
# Set to process group so we can kill it and its children
|
38
|
-
pgroup = Gem.win_platform? ? :new_pgroup : :pgroup
|
77
|
+
pgroup = (Gem.win_platform? && !ENV['NOKOLEXBOR_CROSS_COMPILE']) ? :new_pgroup : :pgroup
|
39
78
|
pid = Process.spawn("cmake #{args}", pgroup => true)
|
40
79
|
|
41
80
|
Timeout.timeout(timeout) do
|
@@ -50,21 +89,6 @@ rescue Timeout::Error
|
|
50
89
|
raise CMakeTimeout.new("cmake has exceeded its timeout of #{timeout}s")
|
51
90
|
end
|
52
91
|
|
53
|
-
# From: https://stackoverflow.com/questions/2108727
|
54
|
-
# Cross-platform way of finding an executable in the $PATH.
|
55
|
-
#
|
56
|
-
# which('ruby') #=> /usr/bin/ruby
|
57
|
-
def which(cmd)
|
58
|
-
exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
|
59
|
-
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
|
60
|
-
exts.each { |ext|
|
61
|
-
exe = File.join(path, "#{cmd}#{ext}")
|
62
|
-
return exe if File.executable? exe
|
63
|
-
}
|
64
|
-
end
|
65
|
-
return nil
|
66
|
-
end
|
67
|
-
|
68
92
|
# From: https://github.com/flavorjones/mini_portile/blob/main/lib/mini_portile2/mini_portile.rb#L94
|
69
93
|
def apply_patch(patch_file, chdir)
|
70
94
|
case
|
@@ -109,9 +133,7 @@ Dir.chdir(LEXBOR_DIR) do
|
|
109
133
|
Dir.mkdir("build") if !Dir.exist?("build")
|
110
134
|
|
111
135
|
Dir.chdir("build") do
|
112
|
-
|
113
|
-
generator = "-G \"MSYS Makefiles\"" if Gem.win_platform?
|
114
|
-
run_cmake(10 * 60, ".. -DCMAKE_INSTALL_PREFIX:PATH=#{INSTALL_DIR} #{cmake_flags.join(' ')} #{generator}")
|
136
|
+
run_cmake(10 * 60, ".. -DCMAKE_INSTALL_PREFIX:PATH=#{INSTALL_DIR} #{lexbor_cmake_flags.join(' ')}")
|
115
137
|
sys("#{MAKE} install")
|
116
138
|
end
|
117
139
|
end
|
@@ -121,7 +143,7 @@ Dir.chdir(EXT_DIR) do
|
|
121
143
|
Dir.mkdir("build") if !Dir.exist?("build")
|
122
144
|
|
123
145
|
Dir.chdir("build") do
|
124
|
-
run_cmake(10 * 60, "
|
146
|
+
run_cmake(10 * 60, ".. #{cmake_flags.join(' ')} #{Gem.win_platform? ? "-DLIBXML2_WITH_THREADS=OFF" : ""}")
|
125
147
|
end
|
126
148
|
end
|
127
149
|
|
@@ -21,17 +21,17 @@
|
|
21
21
|
extern "C" {
|
22
22
|
#endif
|
23
23
|
XMLPUBFUN const xmlChar * XMLCALL
|
24
|
-
|
24
|
+
nl_xmlSAX2GetPublicId (void *ctx);
|
25
25
|
XMLPUBFUN const xmlChar * XMLCALL
|
26
|
-
|
26
|
+
nl_xmlSAX2GetSystemId (void *ctx);
|
27
27
|
XMLPUBFUN void XMLCALL
|
28
28
|
xmlSAX2SetDocumentLocator (void *ctx,
|
29
29
|
xmlSAXLocatorPtr loc);
|
30
30
|
|
31
31
|
XMLPUBFUN int XMLCALL
|
32
|
-
|
32
|
+
nl_xmlSAX2GetLineNumber (void *ctx);
|
33
33
|
XMLPUBFUN int XMLCALL
|
34
|
-
|
34
|
+
nl_xmlSAX2GetColumnNumber (void *ctx);
|
35
35
|
|
36
36
|
XMLPUBFUN int XMLCALL
|
37
37
|
xmlSAX2IsStandalone (void *ctx);
|
@@ -52,7 +52,7 @@ struct _xmlChRangeGroup {
|
|
52
52
|
* Range checking routine
|
53
53
|
*/
|
54
54
|
XMLPUBFUN int XMLCALL
|
55
|
-
|
55
|
+
nl_xmlCharInRange(unsigned int val, const xmlChRangeGroup *group);
|
56
56
|
|
57
57
|
|
58
58
|
/**
|
@@ -75,9 +75,9 @@ XMLPUBFUN int XMLCALL
|
|
75
75
|
*/
|
76
76
|
#define xmlIsBaseCharQ(c) (((c) < 0x100) ? \
|
77
77
|
xmlIsBaseChar_ch((c)) : \
|
78
|
-
|
78
|
+
nl_xmlCharInRange((c), &nl_xmlIsBaseCharGroup))
|
79
79
|
|
80
|
-
XMLPUBVAR const xmlChRangeGroup
|
80
|
+
XMLPUBVAR const xmlChRangeGroup nl_xmlIsBaseCharGroup;
|
81
81
|
|
82
82
|
/**
|
83
83
|
* xmlIsBlank_ch:
|
@@ -121,7 +121,7 @@ XMLPUBVAR const xmlChRangeGroup xmlIsBaseCharGroup;
|
|
121
121
|
((0xe000 <= (c)) && ((c) <= 0xfffd)) || \
|
122
122
|
((0x10000 <= (c)) && ((c) <= 0x10ffff))))
|
123
123
|
|
124
|
-
XMLPUBVAR const xmlChRangeGroup
|
124
|
+
XMLPUBVAR const xmlChRangeGroup nl_xmlIsCharGroup;
|
125
125
|
|
126
126
|
/**
|
127
127
|
* xmlIsCombiningQ:
|
@@ -131,9 +131,9 @@ XMLPUBVAR const xmlChRangeGroup xmlIsCharGroup;
|
|
131
131
|
*/
|
132
132
|
#define xmlIsCombiningQ(c) (((c) < 0x100) ? \
|
133
133
|
0 : \
|
134
|
-
|
134
|
+
nl_xmlCharInRange((c), &nl_xmlIsCombiningGroup))
|
135
135
|
|
136
|
-
XMLPUBVAR const xmlChRangeGroup
|
136
|
+
XMLPUBVAR const xmlChRangeGroup nl_xmlIsCombiningGroup;
|
137
137
|
|
138
138
|
/**
|
139
139
|
* xmlIsDigit_ch:
|
@@ -151,9 +151,9 @@ XMLPUBVAR const xmlChRangeGroup xmlIsCombiningGroup;
|
|
151
151
|
*/
|
152
152
|
#define xmlIsDigitQ(c) (((c) < 0x100) ? \
|
153
153
|
xmlIsDigit_ch((c)) : \
|
154
|
-
|
154
|
+
nl_xmlCharInRange((c), &nl_xmlIsDigitGroup))
|
155
155
|
|
156
|
-
XMLPUBVAR const xmlChRangeGroup
|
156
|
+
XMLPUBVAR const xmlChRangeGroup nl_xmlIsDigitGroup;
|
157
157
|
|
158
158
|
/**
|
159
159
|
* xmlIsExtender_ch:
|
@@ -171,9 +171,9 @@ XMLPUBVAR const xmlChRangeGroup xmlIsDigitGroup;
|
|
171
171
|
*/
|
172
172
|
#define xmlIsExtenderQ(c) (((c) < 0x100) ? \
|
173
173
|
xmlIsExtender_ch((c)) : \
|
174
|
-
|
174
|
+
nl_xmlCharInRange((c), &nl_xmlIsExtenderGroup))
|
175
175
|
|
176
|
-
XMLPUBVAR const xmlChRangeGroup
|
176
|
+
XMLPUBVAR const xmlChRangeGroup nl_xmlIsExtenderGroup;
|
177
177
|
|
178
178
|
/**
|
179
179
|
* xmlIsIdeographicQ:
|
@@ -187,8 +187,8 @@ XMLPUBVAR const xmlChRangeGroup xmlIsExtenderGroup;
|
|
187
187
|
((c) == 0x3007) || \
|
188
188
|
((0x3021 <= (c)) && ((c) <= 0x3029))))
|
189
189
|
|
190
|
-
XMLPUBVAR const xmlChRangeGroup
|
191
|
-
XMLPUBVAR const unsigned char
|
190
|
+
XMLPUBVAR const xmlChRangeGroup nl_xmlIsIdeographicGroup;
|
191
|
+
XMLPUBVAR const unsigned char nl_xmlIsPubidChar_tab[256];
|
192
192
|
|
193
193
|
/**
|
194
194
|
* xmlIsPubidChar_ch:
|
@@ -196,7 +196,7 @@ XMLPUBVAR const unsigned char xmlIsPubidChar_tab[256];
|
|
196
196
|
*
|
197
197
|
* Automatically generated by genChRanges.py
|
198
198
|
*/
|
199
|
-
#define xmlIsPubidChar_ch(c) (
|
199
|
+
#define xmlIsPubidChar_ch(c) (nl_xmlIsPubidChar_tab[(c)])
|
200
200
|
|
201
201
|
/**
|
202
202
|
* xmlIsPubidCharQ:
|
@@ -208,21 +208,21 @@ XMLPUBVAR const unsigned char xmlIsPubidChar_tab[256];
|
|
208
208
|
xmlIsPubidChar_ch((c)) : 0)
|
209
209
|
|
210
210
|
XMLPUBFUN int XMLCALL
|
211
|
-
|
211
|
+
nl_xmlIsBaseChar(unsigned int ch);
|
212
212
|
XMLPUBFUN int XMLCALL
|
213
|
-
|
213
|
+
nl_xmlIsBlank(unsigned int ch);
|
214
214
|
XMLPUBFUN int XMLCALL
|
215
|
-
|
215
|
+
nl_xmlIsChar(unsigned int ch);
|
216
216
|
XMLPUBFUN int XMLCALL
|
217
|
-
|
217
|
+
nl_xmlIsCombining(unsigned int ch);
|
218
218
|
XMLPUBFUN int XMLCALL
|
219
|
-
|
219
|
+
nl_xmlIsDigit(unsigned int ch);
|
220
220
|
XMLPUBFUN int XMLCALL
|
221
|
-
|
221
|
+
nl_xmlIsExtender(unsigned int ch);
|
222
222
|
XMLPUBFUN int XMLCALL
|
223
|
-
|
223
|
+
nl_xmlIsIdeographic(unsigned int ch);
|
224
224
|
XMLPUBFUN int XMLCALL
|
225
|
-
|
225
|
+
nl_xmlIsPubidChar(unsigned int ch);
|
226
226
|
|
227
227
|
#ifdef __cplusplus
|
228
228
|
}
|
@@ -28,52 +28,52 @@ typedef xmlDict *xmlDictPtr;
|
|
28
28
|
* Initializer
|
29
29
|
*/
|
30
30
|
XML_DEPRECATED
|
31
|
-
XMLPUBFUN int XMLCALL
|
31
|
+
XMLPUBFUN int XMLCALL nl_xmlInitializeDict(void);
|
32
32
|
|
33
33
|
/*
|
34
34
|
* Constructor and destructor.
|
35
35
|
*/
|
36
36
|
XMLPUBFUN xmlDictPtr XMLCALL
|
37
|
-
|
37
|
+
nl_xmlDictCreate (void);
|
38
38
|
XMLPUBFUN size_t XMLCALL
|
39
|
-
|
39
|
+
nl_xmlDictSetLimit (xmlDictPtr dict,
|
40
40
|
size_t limit);
|
41
41
|
XMLPUBFUN size_t XMLCALL
|
42
|
-
|
42
|
+
nl_xmlDictGetUsage (xmlDictPtr dict);
|
43
43
|
XMLPUBFUN xmlDictPtr XMLCALL
|
44
|
-
|
44
|
+
nl_xmlDictCreateSub(xmlDictPtr sub);
|
45
45
|
XMLPUBFUN int XMLCALL
|
46
|
-
|
46
|
+
nl_xmlDictReference(xmlDictPtr dict);
|
47
47
|
XMLPUBFUN void XMLCALL
|
48
|
-
|
48
|
+
nl_xmlDictFree (xmlDictPtr dict);
|
49
49
|
|
50
50
|
/*
|
51
51
|
* Lookup of entry in the dictionary.
|
52
52
|
*/
|
53
53
|
XMLPUBFUN const xmlChar * XMLCALL
|
54
|
-
|
54
|
+
nl_xmlDictLookup (xmlDictPtr dict,
|
55
55
|
const xmlChar *name,
|
56
56
|
int len);
|
57
57
|
XMLPUBFUN const xmlChar * XMLCALL
|
58
|
-
|
58
|
+
nl_xmlDictExists (xmlDictPtr dict,
|
59
59
|
const xmlChar *name,
|
60
60
|
int len);
|
61
61
|
XMLPUBFUN const xmlChar * XMLCALL
|
62
|
-
|
62
|
+
nl_xmlDictQLookup (xmlDictPtr dict,
|
63
63
|
const xmlChar *prefix,
|
64
64
|
const xmlChar *name);
|
65
65
|
XMLPUBFUN int XMLCALL
|
66
|
-
|
66
|
+
nl_xmlDictOwns (xmlDictPtr dict,
|
67
67
|
const xmlChar *str);
|
68
68
|
XMLPUBFUN int XMLCALL
|
69
|
-
|
69
|
+
nl_xmlDictSize (xmlDictPtr dict);
|
70
70
|
|
71
71
|
/*
|
72
72
|
* Cleanup function
|
73
73
|
*/
|
74
74
|
XML_DEPRECATED
|
75
75
|
XMLPUBFUN void XMLCALL
|
76
|
-
|
76
|
+
nl_xmlDictCleanup (void);
|
77
77
|
|
78
78
|
#ifdef __cplusplus
|
79
79
|
}
|