nokolexbor 0.2.6 → 0.3.1
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 +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/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 +186 -173
- data/ext/nokolexbor/nl_node_set.c +35 -70
- data/ext/nokolexbor/nl_text.c +44 -0
- data/ext/nokolexbor/nl_xpath_context.c +17 -26
- data/ext/nokolexbor/nokolexbor.c +7 -3
- data/ext/nokolexbor/nokolexbor.h +9 -7
- 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
data/lib/nokolexbor/node_set.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Nokolexbor
|
4
|
-
class NodeSet < Node
|
4
|
+
class NodeSet < Nokolexbor::Node
|
5
5
|
include Enumerable
|
6
6
|
|
7
7
|
def self.new(document, list = [])
|
@@ -54,16 +54,17 @@ module Nokolexbor
|
|
54
54
|
alias_method :inner_text, :content
|
55
55
|
alias_method :to_str, :content
|
56
56
|
|
57
|
-
def inner_html
|
58
|
-
self.map(
|
57
|
+
def inner_html(*args)
|
58
|
+
self.map { |n| n.inner_html(*args) }.join
|
59
59
|
end
|
60
60
|
|
61
|
-
def outer_html
|
62
|
-
self.map(
|
61
|
+
def outer_html(*args)
|
62
|
+
self.map { |n| n.outer_html(*args) }.join
|
63
63
|
end
|
64
64
|
|
65
65
|
alias_method :to_s, :outer_html
|
66
66
|
alias_method :to_html, :outer_html
|
67
|
+
alias_method :serialize, :outer_html
|
67
68
|
|
68
69
|
def remove
|
69
70
|
self.each(&:remove)
|
data/lib/nokolexbor/version.rb
CHANGED
data/lib/nokolexbor.rb
CHANGED
@@ -1,6 +1,26 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
begin
|
4
|
+
# pre-compiled extension by rake-compiler is located inside lib/nokolexbor/<ruby_version>/
|
5
|
+
RUBY_VERSION =~ /(\d+\.\d+)/
|
6
|
+
require "nokolexbor/#{Regexp.last_match(1)}/nokolexbor"
|
7
|
+
rescue LoadError => e
|
8
|
+
if /GLIBC/.match?(e.message)
|
9
|
+
warn(<<~EOM)
|
10
|
+
ERROR: It looks like you're trying to use Nokolexbor as a precompiled native gem on a system
|
11
|
+
with an unsupported version of glibc.
|
12
|
+
#{e.message}
|
13
|
+
If that's the case, then please install Nokolexbor via the `ruby` platform gem:
|
14
|
+
gem install nokolexbor --platform=ruby
|
15
|
+
or:
|
16
|
+
bundle config set force_ruby_platform true
|
17
|
+
EOM
|
18
|
+
raise e
|
19
|
+
end
|
20
|
+
|
21
|
+
require 'nokolexbor/nokolexbor'
|
22
|
+
end
|
23
|
+
|
4
24
|
require 'nokolexbor/version'
|
5
25
|
require 'nokolexbor/node'
|
6
26
|
require 'nokolexbor/document'
|
@@ -31,7 +31,7 @@ index 398d1bb..b35bfab 100644
|
|
31
31
|
{"after", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_AFTER], 5, 0},
|
32
32
|
{"first-letter", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_FIRST_LETTER], 12, 0},
|
33
33
|
- {NULL, NULL, 0, 0},
|
34
|
-
+ {"text", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_TEXT], 4, 0},
|
34
|
+
+ {"text", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_TEXT], 4, 0},
|
35
35
|
{NULL, NULL, 0, 0},
|
36
36
|
{"grammar-error", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_GRAMMAR_ERROR], 13, 0},
|
37
37
|
{"before", (void *) &lxb_css_selectors_pseudo_data_pseudo_element[LXB_CSS_SELECTOR_PSEUDO_ELEMENT_BEFORE], 6, 0},
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nokolexbor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yicheng Zhou
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-12-
|
11
|
+
date: 2022-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -38,7 +38,7 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '5.0'
|
41
|
-
description: Nokolexbor is a high
|
41
|
+
description: Nokolexbor is a high-performance HTML5 parser, with support for both
|
42
42
|
CSS selectors and XPath. It's API is designed to be compatible with Nokogiri.
|
43
43
|
email: zyc9012@gmail.com
|
44
44
|
executables: []
|
@@ -79,9 +79,12 @@ files:
|
|
79
79
|
- ext/nokolexbor/libxml/xpathInternals.h
|
80
80
|
- ext/nokolexbor/libxml/xpointer.h
|
81
81
|
- ext/nokolexbor/memory.c
|
82
|
+
- ext/nokolexbor/nl_cdata.c
|
83
|
+
- ext/nokolexbor/nl_comment.c
|
82
84
|
- ext/nokolexbor/nl_document.c
|
83
85
|
- ext/nokolexbor/nl_node.c
|
84
86
|
- ext/nokolexbor/nl_node_set.c
|
87
|
+
- ext/nokolexbor/nl_text.c
|
85
88
|
- ext/nokolexbor/nl_xpath_context.c
|
86
89
|
- ext/nokolexbor/nokolexbor.c
|
87
90
|
- ext/nokolexbor/nokolexbor.h
|
@@ -555,5 +558,5 @@ requirements: []
|
|
555
558
|
rubygems_version: 3.0.3.1
|
556
559
|
signing_key:
|
557
560
|
specification_version: 4
|
558
|
-
summary: High
|
561
|
+
summary: High-performance HTML5 parser, with support for both CSS selectors and XPath.
|
559
562
|
test_files: []
|