nokolexbor 0.3.4 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/nokolexbor/nl_attribute.c +46 -0
- data/ext/nokolexbor/nl_cdata.c +8 -0
- data/ext/nokolexbor/nl_comment.c +6 -0
- data/ext/nokolexbor/nl_document.c +53 -7
- data/ext/nokolexbor/nl_document_fragment.c +9 -0
- data/ext/nokolexbor/nl_error.c +21 -19
- data/ext/nokolexbor/nl_node.c +255 -49
- data/ext/nokolexbor/nl_node_set.c +56 -1
- data/ext/nokolexbor/nl_processing_instruction.c +6 -0
- data/ext/nokolexbor/nl_text.c +6 -0
- data/ext/nokolexbor/nokolexbor.h +1 -0
- data/lib/nokolexbor/document.rb +52 -5
- data/lib/nokolexbor/document_fragment.rb +11 -0
- data/lib/nokolexbor/node.rb +367 -18
- data/lib/nokolexbor/node_set.rb +56 -0
- data/lib/nokolexbor/version.rb +1 -1
- metadata +2 -24
- data/vendor/lexbor/source/lexbor/encoding/base.h +0 -218
- data/vendor/lexbor/source/lexbor/encoding/big5.c +0 -42839
- data/vendor/lexbor/source/lexbor/encoding/config.cmake +0 -12
- data/vendor/lexbor/source/lexbor/encoding/const.h +0 -65
- data/vendor/lexbor/source/lexbor/encoding/decode.c +0 -3193
- data/vendor/lexbor/source/lexbor/encoding/decode.h +0 -370
- data/vendor/lexbor/source/lexbor/encoding/encode.c +0 -1931
- data/vendor/lexbor/source/lexbor/encoding/encode.h +0 -377
- data/vendor/lexbor/source/lexbor/encoding/encoding.c +0 -252
- data/vendor/lexbor/source/lexbor/encoding/encoding.h +0 -475
- data/vendor/lexbor/source/lexbor/encoding/euc_kr.c +0 -53883
- data/vendor/lexbor/source/lexbor/encoding/gb18030.c +0 -47905
- data/vendor/lexbor/source/lexbor/encoding/iso_2022_jp_katakana.c +0 -159
- data/vendor/lexbor/source/lexbor/encoding/jis0208.c +0 -22477
- data/vendor/lexbor/source/lexbor/encoding/jis0212.c +0 -15787
- data/vendor/lexbor/source/lexbor/encoding/multi.h +0 -53
- data/vendor/lexbor/source/lexbor/encoding/range.c +0 -71
- data/vendor/lexbor/source/lexbor/encoding/range.h +0 -34
- data/vendor/lexbor/source/lexbor/encoding/res.c +0 -222
- data/vendor/lexbor/source/lexbor/encoding/res.h +0 -34
- data/vendor/lexbor/source/lexbor/encoding/single.c +0 -13748
- data/vendor/lexbor/source/lexbor/encoding/single.h +0 -116
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23409daec8c9cbe801afef6c39e6507fc938eb35cad2458ef80fc99e6bf5bece
|
4
|
+
data.tar.gz: 06e83318711ac6e6c2582d78fcd87f5a0efeaceff7421a1880cd8e698637d803
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d77bb45c508edba84043156149ff1dfce0249b7f4d52d871c0552b4f590c01e0879c77b0bf039a46ee019be4e445b072a658fbb9fc3872c8b1d6f48e4801b0dd
|
7
|
+
data.tar.gz: 8ec494323f66188fbd39455c05a63e6be0fa5f8979fcb43310dc80a429a3d77355b8875988fa800041a04f1746254b0d88d9522780c085469efe18308a3d4576
|
@@ -4,6 +4,15 @@ VALUE cNokolexborAttribute;
|
|
4
4
|
extern VALUE mNokolexbor;
|
5
5
|
extern VALUE cNokolexborNode;
|
6
6
|
|
7
|
+
/**
|
8
|
+
* call-seq:
|
9
|
+
* new(document, name) -> Attribute
|
10
|
+
*
|
11
|
+
* Create a new Attribute on the +document+ with +name+.
|
12
|
+
*
|
13
|
+
* @param document [Document]
|
14
|
+
* @param name [String]
|
15
|
+
*/
|
7
16
|
static VALUE
|
8
17
|
nl_attribute_new(int argc, VALUE *argv, VALUE klass)
|
9
18
|
{
|
@@ -38,6 +47,11 @@ nl_attribute_new(int argc, VALUE *argv, VALUE klass)
|
|
38
47
|
return rb_node;
|
39
48
|
}
|
40
49
|
|
50
|
+
/**
|
51
|
+
* Get the name of the Attribute.
|
52
|
+
*
|
53
|
+
* @return [String]
|
54
|
+
*/
|
41
55
|
static VALUE
|
42
56
|
nl_attribute_name(VALUE self)
|
43
57
|
{
|
@@ -50,6 +64,12 @@ nl_attribute_name(VALUE self)
|
|
50
64
|
return rb_utf8_str_new(name, len);
|
51
65
|
}
|
52
66
|
|
67
|
+
/**
|
68
|
+
* call-seq:
|
69
|
+
* name=(name) -> String
|
70
|
+
*
|
71
|
+
* Set the name of the Attribute.
|
72
|
+
*/
|
53
73
|
static VALUE
|
54
74
|
nl_attribute_set_name(VALUE self, VALUE rb_name)
|
55
75
|
{
|
@@ -67,6 +87,11 @@ nl_attribute_set_name(VALUE self, VALUE rb_name)
|
|
67
87
|
return rb_name;
|
68
88
|
}
|
69
89
|
|
90
|
+
/**
|
91
|
+
* Get the value of the Attribute.
|
92
|
+
*
|
93
|
+
* @return [String]
|
94
|
+
*/
|
70
95
|
static VALUE
|
71
96
|
nl_attribute_value(VALUE self)
|
72
97
|
{
|
@@ -79,6 +104,12 @@ nl_attribute_value(VALUE self)
|
|
79
104
|
return rb_utf8_str_new(value, len);
|
80
105
|
}
|
81
106
|
|
107
|
+
/**
|
108
|
+
* call-seq:
|
109
|
+
* value=(value) -> String
|
110
|
+
*
|
111
|
+
* Set the value of the Attribute.
|
112
|
+
*/
|
82
113
|
static VALUE
|
83
114
|
nl_attribute_set_value(VALUE self, VALUE rb_content)
|
84
115
|
{
|
@@ -96,6 +127,11 @@ nl_attribute_set_value(VALUE self, VALUE rb_content)
|
|
96
127
|
return rb_content;
|
97
128
|
}
|
98
129
|
|
130
|
+
/**
|
131
|
+
* Get the owner Node of the Attribute.
|
132
|
+
*
|
133
|
+
* @return [Node]
|
134
|
+
*/
|
99
135
|
static VALUE
|
100
136
|
nl_attribute_parent(VALUE self)
|
101
137
|
{
|
@@ -108,6 +144,11 @@ nl_attribute_parent(VALUE self)
|
|
108
144
|
return nl_rb_node_create(attr->owner, nl_rb_document_get(self));
|
109
145
|
}
|
110
146
|
|
147
|
+
/**
|
148
|
+
* Get the previous Attribute.
|
149
|
+
*
|
150
|
+
* @return [Attribute]
|
151
|
+
*/
|
111
152
|
static VALUE
|
112
153
|
nl_attribute_previous(VALUE self)
|
113
154
|
{
|
@@ -120,6 +161,11 @@ nl_attribute_previous(VALUE self)
|
|
120
161
|
return nl_rb_node_create(attr->prev, nl_rb_document_get(self));
|
121
162
|
}
|
122
163
|
|
164
|
+
/**
|
165
|
+
* Get the next Attribute.
|
166
|
+
*
|
167
|
+
* @return [Attribute]
|
168
|
+
*/
|
123
169
|
static VALUE
|
124
170
|
nl_attribute_next(VALUE self)
|
125
171
|
{
|
data/ext/nokolexbor/nl_cdata.c
CHANGED
@@ -4,6 +4,14 @@ VALUE cNokolexborCData;
|
|
4
4
|
extern VALUE cNokolexborText;
|
5
5
|
extern VALUE mNokolexbor;
|
6
6
|
|
7
|
+
/**
|
8
|
+
* call-seq:
|
9
|
+
* new(content, document) { |CDATA| ... } -> CDATA
|
10
|
+
*
|
11
|
+
* Create a new CDATA from +content+.
|
12
|
+
*
|
13
|
+
* @return [CDATA]
|
14
|
+
*/
|
7
15
|
static VALUE
|
8
16
|
nl_cdata_new(int argc, VALUE *argv, VALUE klass)
|
9
17
|
{
|
data/ext/nokolexbor/nl_comment.c
CHANGED
@@ -4,6 +4,12 @@ VALUE cNokolexborComment;
|
|
4
4
|
extern VALUE cNokolexborCharacterData;
|
5
5
|
extern VALUE mNokolexbor;
|
6
6
|
|
7
|
+
/**
|
8
|
+
* call-seq:
|
9
|
+
* new(content, document) { |Comment| ... } -> Comment
|
10
|
+
*
|
11
|
+
* Create a new Comment from +content+.
|
12
|
+
*/
|
7
13
|
static VALUE
|
8
14
|
nl_comment_new(int argc, VALUE *argv, VALUE klass)
|
9
15
|
{
|
@@ -21,6 +21,16 @@ const rb_data_type_t nl_document_type = {
|
|
21
21
|
RUBY_TYPED_FREE_IMMEDIATELY,
|
22
22
|
};
|
23
23
|
|
24
|
+
/**
|
25
|
+
* call-seq:
|
26
|
+
* parse(string_or_io) -> Document
|
27
|
+
*
|
28
|
+
* Parse HTML into a {Document}.
|
29
|
+
*
|
30
|
+
* @param string_or_io [String, #read]
|
31
|
+
* The HTML to be parsed. It may be a String, or any object that
|
32
|
+
* responds to #read such as an IO, or StringIO.
|
33
|
+
*/
|
24
34
|
static VALUE
|
25
35
|
nl_document_parse(VALUE self, VALUE rb_string_or_io)
|
26
36
|
{
|
@@ -51,6 +61,11 @@ nl_document_parse(VALUE self, VALUE rb_string_or_io)
|
|
51
61
|
return TypedData_Wrap_Struct(cNokolexborDocument, &nl_document_type, document);
|
52
62
|
}
|
53
63
|
|
64
|
+
/**
|
65
|
+
* Create a new document.
|
66
|
+
*
|
67
|
+
* @return [Document]
|
68
|
+
*/
|
54
69
|
static VALUE
|
55
70
|
nl_document_new(VALUE self)
|
56
71
|
{
|
@@ -65,21 +80,51 @@ nl_rb_document_unwrap(VALUE rb_doc)
|
|
65
80
|
return doc;
|
66
81
|
}
|
67
82
|
|
68
|
-
|
69
|
-
|
83
|
+
/**
|
84
|
+
* Get the title of this document.
|
85
|
+
*
|
86
|
+
* @return [String]
|
87
|
+
*/
|
88
|
+
static VALUE
|
89
|
+
nl_document_get_title(VALUE self)
|
70
90
|
{
|
71
91
|
size_t len;
|
72
|
-
lxb_char_t *str = lxb_html_document_title(nl_rb_document_unwrap(
|
92
|
+
lxb_char_t *str = lxb_html_document_title(nl_rb_document_unwrap(self), &len);
|
73
93
|
return str == NULL ? rb_str_new("", 0) : rb_utf8_str_new(str, len);
|
74
94
|
}
|
75
95
|
|
76
|
-
|
77
|
-
|
96
|
+
/**
|
97
|
+
* call-seq:
|
98
|
+
* title=(text) -> String
|
99
|
+
*
|
100
|
+
* Set the title of this document.
|
101
|
+
*
|
102
|
+
* If a title element is already present, its content is replaced
|
103
|
+
* with the given text.
|
104
|
+
*
|
105
|
+
* Otherwise, this method tries to create one inside <head>.
|
106
|
+
*
|
107
|
+
* @return [String]
|
108
|
+
*/
|
109
|
+
static VALUE
|
110
|
+
nl_document_set_title(VALUE self, VALUE rb_title)
|
78
111
|
{
|
79
112
|
const char *c_title = StringValuePtr(rb_title);
|
80
113
|
size_t len = RSTRING_LEN(rb_title);
|
81
|
-
lxb_char_t *str = lxb_html_document_title_set(nl_rb_document_unwrap(
|
82
|
-
return
|
114
|
+
lxb_char_t *str = lxb_html_document_title_set(nl_rb_document_unwrap(self), (const lxb_char_t *)c_title, len);
|
115
|
+
return rb_title;
|
116
|
+
}
|
117
|
+
|
118
|
+
/**
|
119
|
+
* Get the root node for this document.
|
120
|
+
*
|
121
|
+
* @return [Node]
|
122
|
+
*/
|
123
|
+
static VALUE
|
124
|
+
nl_document_root(VALUE self)
|
125
|
+
{
|
126
|
+
lxb_dom_document_t *doc = nl_rb_document_unwrap(self);
|
127
|
+
return nl_rb_node_create(lxb_dom_document_root(doc), self);
|
83
128
|
}
|
84
129
|
|
85
130
|
void Init_nl_document(void)
|
@@ -89,4 +134,5 @@ void Init_nl_document(void)
|
|
89
134
|
rb_define_singleton_method(cNokolexborDocument, "parse", nl_document_parse, 1);
|
90
135
|
rb_define_method(cNokolexborDocument, "title", nl_document_get_title, 0);
|
91
136
|
rb_define_method(cNokolexborDocument, "title=", nl_document_set_title, 1);
|
137
|
+
rb_define_method(cNokolexborDocument, "root", nl_document_root, 0);
|
92
138
|
}
|
@@ -4,6 +4,15 @@ VALUE cNokolexborDocumentFragment;
|
|
4
4
|
extern VALUE cNokolexborNode;
|
5
5
|
extern VALUE mNokolexbor;
|
6
6
|
|
7
|
+
/**
|
8
|
+
* call-seq:
|
9
|
+
* new(document, tags = nil, ctx = nil) -> DocumentFragment
|
10
|
+
*
|
11
|
+
* Create a {DocumentFragment} from +tags+.
|
12
|
+
*
|
13
|
+
* If +ctx+ is present, it is used as a context node for the
|
14
|
+
* subtree created.
|
15
|
+
*/
|
7
16
|
static VALUE
|
8
17
|
nl_document_fragment_new(int argc, VALUE *argv, VALUE klass)
|
9
18
|
{
|
data/ext/nokolexbor/nl_error.c
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
#include "nokolexbor.h"
|
2
2
|
|
3
|
+
VALUE mLexbor;
|
3
4
|
VALUE eLexborError;
|
4
5
|
VALUE eLexborMemoryAllocationError;
|
5
6
|
VALUE eLexborSmallBufferError;
|
@@ -71,23 +72,24 @@ void nl_raise_lexbor_error(lxb_status_t error)
|
|
71
72
|
|
72
73
|
void Init_nl_error(void)
|
73
74
|
{
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
75
|
+
mLexbor = rb_define_module_under(mNokolexbor, "Lexbor");
|
76
|
+
eLexborError = rb_define_class_under(mLexbor, "Error", rb_eStandardError);
|
77
|
+
eLexborMemoryAllocationError = rb_define_class_under(mLexbor, "MemoryAllocationError", eLexborError);
|
78
|
+
eLexborSmallBufferError = rb_define_class_under(mLexbor, "SmallBufferError", eLexborError);
|
79
|
+
eLexborObjectIsNullError = rb_define_class_under(mLexbor, "ObjectIsNullError", eLexborError);
|
80
|
+
eLexborIncompleteObjectError = rb_define_class_under(mLexbor, "IncompleteObjectError", eLexborError);
|
81
|
+
eLexborNoFreeSlotError = rb_define_class_under(mLexbor, "NoFreeSlotError", eLexborError);
|
82
|
+
eLexborTooSmallSizeError = rb_define_class_under(mLexbor, "TooSmallSizeError", eLexborError);
|
83
|
+
eLexborNotExistsError = rb_define_class_under(mLexbor, "NotExistsError", eLexborError);
|
84
|
+
eLexborWrongArgsError = rb_define_class_under(mLexbor, "WrongArgsError", eLexborError);
|
85
|
+
eLexborWrongStageError = rb_define_class_under(mLexbor, "WrongStageError", eLexborError);
|
86
|
+
eLexborUnexpectedResultError = rb_define_class_under(mLexbor, "UnexpectedResultError", eLexborError);
|
87
|
+
eLexborUnexpectedDataError = rb_define_class_under(mLexbor, "UnexpectedDataError", eLexborError);
|
88
|
+
eLexborOverflowError = rb_define_class_under(mLexbor, "OverflowError", eLexborError);
|
89
|
+
eLexborContinueStatus = rb_define_class_under(mLexbor, "ContinueStatus", eLexborError);
|
90
|
+
eLexborSmallBufferStatus = rb_define_class_under(mLexbor, "SmallBufferStatus", eLexborError);
|
91
|
+
eLexborAbortedStatus = rb_define_class_under(mLexbor, "AbortedStatus", eLexborError);
|
92
|
+
eLexborStoppedStatus = rb_define_class_under(mLexbor, "StoppedStatus", eLexborError);
|
93
|
+
eLexborNextStatus = rb_define_class_under(mLexbor, "NextStatus", eLexborError);
|
94
|
+
eLexborStopStatus = rb_define_class_under(mLexbor, "StopStatus", eLexborError);
|
93
95
|
}
|