nokogiri 1.10.10 → 1.12.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of nokogiri might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +3 -0
- data/LICENSE-DEPENDENCIES.md +1173 -884
- data/LICENSE.md +1 -1
- data/README.md +176 -96
- data/dependencies.yml +12 -12
- data/ext/nokogiri/depend +38 -358
- data/ext/nokogiri/extconf.rb +716 -414
- data/ext/nokogiri/gumbo.c +584 -0
- data/ext/nokogiri/html4_document.c +166 -0
- data/ext/nokogiri/html4_element_description.c +294 -0
- data/ext/nokogiri/html4_entity_lookup.c +37 -0
- data/ext/nokogiri/html4_sax_parser_context.c +120 -0
- data/ext/nokogiri/html4_sax_push_parser.c +95 -0
- data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
- data/ext/nokogiri/nokogiri.c +228 -91
- data/ext/nokogiri/nokogiri.h +191 -89
- data/ext/nokogiri/test_global_handlers.c +40 -0
- data/ext/nokogiri/xml_attr.c +15 -15
- data/ext/nokogiri/xml_attribute_decl.c +18 -18
- data/ext/nokogiri/xml_cdata.c +13 -18
- data/ext/nokogiri/xml_comment.c +19 -26
- data/ext/nokogiri/xml_document.c +267 -195
- data/ext/nokogiri/xml_document_fragment.c +13 -15
- data/ext/nokogiri/xml_dtd.c +54 -48
- data/ext/nokogiri/xml_element_content.c +31 -26
- data/ext/nokogiri/xml_element_decl.c +22 -22
- data/ext/nokogiri/xml_encoding_handler.c +28 -17
- data/ext/nokogiri/xml_entity_decl.c +32 -30
- data/ext/nokogiri/xml_entity_reference.c +16 -18
- data/ext/nokogiri/xml_namespace.c +60 -51
- data/ext/nokogiri/xml_node.c +493 -407
- data/ext/nokogiri/xml_node_set.c +174 -162
- data/ext/nokogiri/xml_processing_instruction.c +17 -19
- data/ext/nokogiri/xml_reader.c +197 -172
- data/ext/nokogiri/xml_relax_ng.c +52 -28
- data/ext/nokogiri/xml_sax_parser.c +112 -112
- data/ext/nokogiri/xml_sax_parser_context.c +105 -86
- data/ext/nokogiri/xml_sax_push_parser.c +36 -27
- data/ext/nokogiri/xml_schema.c +96 -46
- data/ext/nokogiri/xml_syntax_error.c +42 -21
- data/ext/nokogiri/xml_text.c +13 -17
- data/ext/nokogiri/xml_xpath_context.c +158 -73
- data/ext/nokogiri/xslt_stylesheet.c +158 -164
- data/gumbo-parser/CHANGES.md +63 -0
- data/gumbo-parser/Makefile +101 -0
- data/gumbo-parser/THANKS +27 -0
- data/gumbo-parser/src/Makefile +34 -0
- data/gumbo-parser/src/README.md +41 -0
- data/gumbo-parser/src/ascii.c +75 -0
- data/gumbo-parser/src/ascii.h +115 -0
- data/gumbo-parser/src/attribute.c +42 -0
- data/gumbo-parser/src/attribute.h +17 -0
- data/gumbo-parser/src/char_ref.c +22225 -0
- data/gumbo-parser/src/char_ref.h +29 -0
- data/gumbo-parser/src/char_ref.rl +2154 -0
- data/gumbo-parser/src/error.c +626 -0
- data/gumbo-parser/src/error.h +148 -0
- data/gumbo-parser/src/foreign_attrs.c +104 -0
- data/gumbo-parser/src/foreign_attrs.gperf +27 -0
- data/gumbo-parser/src/gumbo.h +943 -0
- data/gumbo-parser/src/insertion_mode.h +33 -0
- data/gumbo-parser/src/macros.h +91 -0
- data/gumbo-parser/src/parser.c +4886 -0
- data/gumbo-parser/src/parser.h +41 -0
- data/gumbo-parser/src/replacement.h +33 -0
- data/gumbo-parser/src/string_buffer.c +103 -0
- data/gumbo-parser/src/string_buffer.h +68 -0
- data/gumbo-parser/src/string_piece.c +48 -0
- data/gumbo-parser/src/svg_attrs.c +174 -0
- data/gumbo-parser/src/svg_attrs.gperf +77 -0
- data/gumbo-parser/src/svg_tags.c +137 -0
- data/gumbo-parser/src/svg_tags.gperf +55 -0
- data/gumbo-parser/src/tag.c +222 -0
- data/gumbo-parser/src/tag_lookup.c +382 -0
- data/gumbo-parser/src/tag_lookup.gperf +169 -0
- data/gumbo-parser/src/tag_lookup.h +13 -0
- data/gumbo-parser/src/token_buffer.c +79 -0
- data/gumbo-parser/src/token_buffer.h +71 -0
- data/gumbo-parser/src/token_type.h +17 -0
- data/gumbo-parser/src/tokenizer.c +3463 -0
- data/gumbo-parser/src/tokenizer.h +112 -0
- data/gumbo-parser/src/tokenizer_states.h +339 -0
- data/gumbo-parser/src/utf8.c +245 -0
- data/gumbo-parser/src/utf8.h +164 -0
- data/gumbo-parser/src/util.c +68 -0
- data/gumbo-parser/src/util.h +30 -0
- data/gumbo-parser/src/vector.c +111 -0
- data/gumbo-parser/src/vector.h +45 -0
- data/lib/nokogiri/css/node.rb +1 -0
- data/lib/nokogiri/css/parser.rb +64 -63
- data/lib/nokogiri/css/parser.y +3 -3
- data/lib/nokogiri/css/parser_extras.rb +39 -36
- data/lib/nokogiri/css/syntax_error.rb +2 -1
- data/lib/nokogiri/css/tokenizer.rb +1 -0
- data/lib/nokogiri/css/xpath_visitor.rb +73 -43
- data/lib/nokogiri/css.rb +15 -14
- data/lib/nokogiri/decorators/slop.rb +1 -0
- data/lib/nokogiri/extension.rb +31 -0
- data/lib/nokogiri/gumbo.rb +14 -0
- data/lib/nokogiri/html.rb +32 -27
- data/lib/nokogiri/{html → html4}/builder.rb +3 -2
- data/lib/nokogiri/{html → html4}/document.rb +17 -30
- data/lib/nokogiri/{html → html4}/document_fragment.rb +18 -17
- data/lib/nokogiri/{html → html4}/element_description.rb +2 -1
- data/lib/nokogiri/{html → html4}/element_description_defaults.rb +2 -1
- data/lib/nokogiri/{html → html4}/entity_lookup.rb +2 -1
- data/lib/nokogiri/{html → html4}/sax/parser.rb +12 -14
- data/lib/nokogiri/html4/sax/parser_context.rb +19 -0
- data/lib/nokogiri/{html → html4}/sax/push_parser.rb +6 -5
- data/lib/nokogiri/html4.rb +40 -0
- data/lib/nokogiri/html5/document.rb +74 -0
- data/lib/nokogiri/html5/document_fragment.rb +80 -0
- data/lib/nokogiri/html5/node.rb +93 -0
- data/lib/nokogiri/html5.rb +473 -0
- data/lib/nokogiri/jruby/dependencies.rb +20 -0
- data/lib/nokogiri/syntax_error.rb +1 -0
- data/lib/nokogiri/version/constant.rb +5 -0
- data/lib/nokogiri/version/info.rb +215 -0
- data/lib/nokogiri/version.rb +3 -109
- data/lib/nokogiri/xml/attr.rb +1 -0
- data/lib/nokogiri/xml/attribute_decl.rb +1 -0
- data/lib/nokogiri/xml/builder.rb +41 -2
- data/lib/nokogiri/xml/cdata.rb +1 -0
- data/lib/nokogiri/xml/character_data.rb +1 -0
- data/lib/nokogiri/xml/document.rb +138 -41
- data/lib/nokogiri/xml/document_fragment.rb +5 -6
- data/lib/nokogiri/xml/dtd.rb +1 -0
- data/lib/nokogiri/xml/element_content.rb +1 -0
- data/lib/nokogiri/xml/element_decl.rb +1 -0
- data/lib/nokogiri/xml/entity_decl.rb +1 -0
- data/lib/nokogiri/xml/entity_reference.rb +1 -0
- data/lib/nokogiri/xml/namespace.rb +1 -0
- data/lib/nokogiri/xml/node/save_options.rb +2 -1
- data/lib/nokogiri/xml/node.rb +629 -293
- data/lib/nokogiri/xml/node_set.rb +1 -0
- data/lib/nokogiri/xml/notation.rb +1 -0
- data/lib/nokogiri/xml/parse_options.rb +12 -3
- data/lib/nokogiri/xml/pp/character_data.rb +1 -0
- data/lib/nokogiri/xml/pp/node.rb +1 -0
- data/lib/nokogiri/xml/pp.rb +3 -2
- data/lib/nokogiri/xml/processing_instruction.rb +1 -0
- data/lib/nokogiri/xml/reader.rb +9 -12
- data/lib/nokogiri/xml/relax_ng.rb +7 -2
- data/lib/nokogiri/xml/sax/document.rb +25 -30
- data/lib/nokogiri/xml/sax/parser.rb +1 -0
- data/lib/nokogiri/xml/sax/parser_context.rb +1 -0
- data/lib/nokogiri/xml/sax/push_parser.rb +1 -0
- data/lib/nokogiri/xml/sax.rb +5 -4
- data/lib/nokogiri/xml/schema.rb +13 -4
- data/lib/nokogiri/xml/searchable.rb +25 -16
- data/lib/nokogiri/xml/syntax_error.rb +1 -0
- data/lib/nokogiri/xml/text.rb +1 -0
- data/lib/nokogiri/xml/xpath/syntax_error.rb +2 -1
- data/lib/nokogiri/xml/xpath.rb +4 -5
- data/lib/nokogiri/xml/xpath_context.rb +1 -0
- data/lib/nokogiri/xml.rb +36 -36
- data/lib/nokogiri/xslt/stylesheet.rb +2 -1
- data/lib/nokogiri/xslt.rb +17 -16
- data/lib/nokogiri.rb +32 -51
- data/lib/xsd/xmlparser/nokogiri.rb +1 -0
- data/patches/libxml2/{0002-Remove-script-macro-support.patch → 0001-Remove-script-macro-support.patch} +0 -0
- data/patches/libxml2/{0003-Update-entities-to-remove-handling-of-ssi.patch → 0002-Update-entities-to-remove-handling-of-ssi.patch} +0 -0
- data/patches/libxml2/{0004-libxml2.la-is-in-top_builddir.patch → 0003-libxml2.la-is-in-top_builddir.patch} +1 -1
- data/patches/libxml2/0004-use-glibc-strlen.patch +53 -0
- data/patches/libxml2/0005-avoid-isnan-isinf.patch +81 -0
- data/patches/libxml2/0006-update-automake-files-for-arm64.patch +2511 -0
- data/patches/libxml2/0007-Fix-XPath-recursion-limit.patch +31 -0
- data/patches/libxslt/0001-update-automake-files-for-arm64.patch +2511 -0
- data/patches/libxslt/0002-Fix-xml2-config-check-in-configure-script.patch +19 -0
- data/ports/archives/libxml2-2.9.12.tar.gz +0 -0
- metadata +139 -161
- data/ext/nokogiri/html_document.c +0 -170
- data/ext/nokogiri/html_document.h +0 -10
- data/ext/nokogiri/html_element_description.c +0 -279
- data/ext/nokogiri/html_element_description.h +0 -10
- data/ext/nokogiri/html_entity_lookup.c +0 -32
- data/ext/nokogiri/html_entity_lookup.h +0 -8
- data/ext/nokogiri/html_sax_parser_context.c +0 -116
- data/ext/nokogiri/html_sax_parser_context.h +0 -11
- data/ext/nokogiri/html_sax_push_parser.c +0 -87
- data/ext/nokogiri/html_sax_push_parser.h +0 -9
- data/ext/nokogiri/xml_attr.h +0 -9
- data/ext/nokogiri/xml_attribute_decl.h +0 -9
- data/ext/nokogiri/xml_cdata.h +0 -9
- data/ext/nokogiri/xml_comment.h +0 -9
- data/ext/nokogiri/xml_document.h +0 -23
- data/ext/nokogiri/xml_document_fragment.h +0 -10
- data/ext/nokogiri/xml_dtd.h +0 -10
- data/ext/nokogiri/xml_element_content.h +0 -10
- data/ext/nokogiri/xml_element_decl.h +0 -9
- data/ext/nokogiri/xml_encoding_handler.h +0 -8
- data/ext/nokogiri/xml_entity_decl.h +0 -10
- data/ext/nokogiri/xml_entity_reference.h +0 -9
- data/ext/nokogiri/xml_io.c +0 -61
- data/ext/nokogiri/xml_io.h +0 -11
- data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
- data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
- data/ext/nokogiri/xml_namespace.h +0 -14
- data/ext/nokogiri/xml_node.h +0 -13
- data/ext/nokogiri/xml_node_set.h +0 -12
- data/ext/nokogiri/xml_processing_instruction.h +0 -9
- data/ext/nokogiri/xml_reader.h +0 -10
- data/ext/nokogiri/xml_relax_ng.h +0 -9
- data/ext/nokogiri/xml_sax_parser.h +0 -39
- data/ext/nokogiri/xml_sax_parser_context.h +0 -10
- data/ext/nokogiri/xml_sax_push_parser.h +0 -9
- data/ext/nokogiri/xml_schema.h +0 -9
- data/ext/nokogiri/xml_syntax_error.h +0 -13
- data/ext/nokogiri/xml_text.h +0 -9
- data/ext/nokogiri/xml_xpath_context.h +0 -10
- data/ext/nokogiri/xslt_stylesheet.h +0 -14
- data/lib/nokogiri/html/sax/parser_context.rb +0 -16
- data/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -78
- data/patches/libxml2/0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch +0 -32
- data/ports/archives/libxml2-2.9.10.tar.gz +0 -0
@@ -0,0 +1,75 @@
|
|
1
|
+
#include "ascii.h"
|
2
|
+
|
3
|
+
int gumbo_ascii_strcasecmp(const char *s1, const char *s2) {
|
4
|
+
int c1, c2;
|
5
|
+
while (*s1 && *s2) {
|
6
|
+
c1 = (int)(unsigned char) gumbo_ascii_tolower(*s1);
|
7
|
+
c2 = (int)(unsigned char) gumbo_ascii_tolower(*s2);
|
8
|
+
if (c1 != c2) {
|
9
|
+
return (c1 - c2);
|
10
|
+
}
|
11
|
+
s1++;
|
12
|
+
s2++;
|
13
|
+
}
|
14
|
+
return (((int)(unsigned char) *s1) - ((int)(unsigned char) *s2));
|
15
|
+
}
|
16
|
+
|
17
|
+
int gumbo_ascii_strncasecmp(const char *s1, const char *s2, size_t n) {
|
18
|
+
int c1, c2;
|
19
|
+
while (n && *s1 && *s2) {
|
20
|
+
n -= 1;
|
21
|
+
c1 = (int)(unsigned char) gumbo_ascii_tolower(*s1);
|
22
|
+
c2 = (int)(unsigned char) gumbo_ascii_tolower(*s2);
|
23
|
+
if (c1 != c2) {
|
24
|
+
return (c1 - c2);
|
25
|
+
}
|
26
|
+
s1++;
|
27
|
+
s2++;
|
28
|
+
}
|
29
|
+
if (n) {
|
30
|
+
return (((int)(unsigned char) *s1) - ((int)(unsigned char) *s2));
|
31
|
+
}
|
32
|
+
return 0;
|
33
|
+
}
|
34
|
+
|
35
|
+
const unsigned char _gumbo_ascii_table[0x80] = {
|
36
|
+
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x03,0x03,0x01,0x03,0x03,0x01,0x01,
|
37
|
+
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
|
38
|
+
0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
39
|
+
0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,
|
40
|
+
0x00,0x28,0x28,0x28,0x28,0x28,0x28,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
|
41
|
+
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,
|
42
|
+
0x00,0x50,0x50,0x50,0x50,0x50,0x50,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
|
43
|
+
0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,
|
44
|
+
};
|
45
|
+
|
46
|
+
// Table generation code.
|
47
|
+
// clang -DGUMBO_GEN_TABLE=1 ascii.c && ./a.out && rm a.out
|
48
|
+
#if GUMBO_GEN_TABLE
|
49
|
+
#include <stdio.h>
|
50
|
+
|
51
|
+
int main() {
|
52
|
+
printf("const unsigned char _gumbo_ascii_table[0x80] = {");
|
53
|
+
for (int c = 0; c < 0x80; ++c) {
|
54
|
+
unsigned int x = 0;
|
55
|
+
// https://infra.spec.whatwg.org/#ascii-code-point
|
56
|
+
if (c <= 0x1f)
|
57
|
+
x |= GUMBO_ASCII_CNTRL;
|
58
|
+
if (c == 0x09 || c == 0x0a || c == 0x0c || c == 0x0d || c == 0x20)
|
59
|
+
x |= GUMBO_ASCII_SPACE;
|
60
|
+
if (c >= 0x30 && c <= 0x39)
|
61
|
+
x |= GUMBO_ASCII_DIGIT;
|
62
|
+
if ((c >= 0x30 && c <= 0x39) || (c >= 0x41 && c <= 0x46))
|
63
|
+
x |= GUMBO_ASCII_UPPER_XDIGIT;
|
64
|
+
if ((c >= 0x30 && c <= 0x39) || (c >= 0x61 && c <= 0x66))
|
65
|
+
x |= GUMBO_ASCII_LOWER_XDIGIT;
|
66
|
+
if (c >= 0x41 && c <= 0x5a)
|
67
|
+
x |= GUMBO_ASCII_UPPER_ALPHA;
|
68
|
+
if (c >= 0x61 && c <= 0x7a)
|
69
|
+
x |= GUMBO_ASCII_LOWER_ALPHA;
|
70
|
+
printf("%s0x%02x,", (c % 16 == 0? "\n " : ""), x);
|
71
|
+
}
|
72
|
+
printf("\n};\n");
|
73
|
+
return 0;
|
74
|
+
}
|
75
|
+
#endif
|
@@ -0,0 +1,115 @@
|
|
1
|
+
#ifndef GUMBO_ASCII_H_
|
2
|
+
#define GUMBO_ASCII_H_
|
3
|
+
|
4
|
+
#include <stddef.h>
|
5
|
+
#include "macros.h"
|
6
|
+
|
7
|
+
#ifdef __cplusplus
|
8
|
+
extern "C" {
|
9
|
+
#endif
|
10
|
+
|
11
|
+
PURE NONNULL_ARGS
|
12
|
+
int gumbo_ascii_strcasecmp(const char *s1, const char *s2);
|
13
|
+
|
14
|
+
PURE NONNULL_ARGS
|
15
|
+
int gumbo_ascii_strncasecmp(const char *s1, const char *s2, size_t n);
|
16
|
+
|
17
|
+
// If these values change, then _gumbo_ascii_table needs to be regenerated.
|
18
|
+
#define GUMBO_ASCII_CNTRL 1
|
19
|
+
#define GUMBO_ASCII_SPACE 2
|
20
|
+
#define GUMBO_ASCII_DIGIT 4
|
21
|
+
#define GUMBO_ASCII_UPPER_XDIGIT 8
|
22
|
+
#define GUMBO_ASCII_LOWER_XDIGIT 16
|
23
|
+
#define GUMBO_ASCII_UPPER_ALPHA 32
|
24
|
+
#define GUMBO_ASCII_LOWER_ALPHA 64
|
25
|
+
#define GUMBO_ASCII_XDIGIT (GUMBO_ASCII_LOWER_XDIGIT | GUMBO_ASCII_UPPER_XDIGIT)
|
26
|
+
#define GUMBO_ASCII_ALPHA (GUMBO_ASCII_UPPER_ALPHA | GUMBO_ASCII_LOWER_ALPHA)
|
27
|
+
#define GUMBO_ASCII_ALNUM (GUMBO_ASCII_DIGIT | GUMBO_ASCII_ALPHA)
|
28
|
+
|
29
|
+
extern const unsigned char _gumbo_ascii_table[0x80];
|
30
|
+
|
31
|
+
CONST_FN
|
32
|
+
static inline int gumbo_ascii_isascii(int c) {
|
33
|
+
return ((unsigned int)c & ~0x7fu) == 0;
|
34
|
+
}
|
35
|
+
|
36
|
+
// 0x00 -- 0x1F (A C0 control)
|
37
|
+
CONST_FN
|
38
|
+
static inline int gumbo_ascii_iscntrl(int c) {
|
39
|
+
return gumbo_ascii_isascii(c)
|
40
|
+
&& (_gumbo_ascii_table[c] & GUMBO_ASCII_CNTRL);
|
41
|
+
}
|
42
|
+
|
43
|
+
// 0x09, 0x0a, 0x0c, 0x0d, 0x20
|
44
|
+
CONST_FN
|
45
|
+
static inline int gumbo_ascii_isspace(int c) {
|
46
|
+
return gumbo_ascii_isascii(c)
|
47
|
+
&& (_gumbo_ascii_table[c] & GUMBO_ASCII_SPACE);
|
48
|
+
}
|
49
|
+
|
50
|
+
CONST_FN
|
51
|
+
static inline int gumbo_ascii_istab_or_newline(int c) {
|
52
|
+
return c == 0x09 || c == 0x0a || c == 0x0d;
|
53
|
+
}
|
54
|
+
|
55
|
+
|
56
|
+
CONST_FN
|
57
|
+
static inline int gumbo_ascii_isdigit(int c) {
|
58
|
+
return c >= 0x30 && c <= 0x39;
|
59
|
+
}
|
60
|
+
|
61
|
+
CONST_FN
|
62
|
+
static inline int gumbo_ascii_isalpha(int c) {
|
63
|
+
return gumbo_ascii_isascii(c)
|
64
|
+
&& (_gumbo_ascii_table[c] & GUMBO_ASCII_ALPHA);
|
65
|
+
}
|
66
|
+
|
67
|
+
CONST_FN
|
68
|
+
static inline int gumbo_ascii_isxdigit(int c) {
|
69
|
+
return gumbo_ascii_isascii(c)
|
70
|
+
&& (_gumbo_ascii_table[c] & GUMBO_ASCII_XDIGIT);
|
71
|
+
}
|
72
|
+
|
73
|
+
CONST_FN
|
74
|
+
static inline int gumbo_ascii_isupper_xdigit(int c) {
|
75
|
+
return gumbo_ascii_isascii(c)
|
76
|
+
&& (_gumbo_ascii_table[c] & GUMBO_ASCII_UPPER_XDIGIT);
|
77
|
+
}
|
78
|
+
|
79
|
+
CONST_FN
|
80
|
+
static inline int gumbo_ascii_islower_xdigit(int c) {
|
81
|
+
return gumbo_ascii_isascii(c)
|
82
|
+
&& (_gumbo_ascii_table[c] & GUMBO_ASCII_LOWER_XDIGIT);
|
83
|
+
}
|
84
|
+
|
85
|
+
CONST_FN
|
86
|
+
static inline int gumbo_ascii_isupper(int c) {
|
87
|
+
return ((unsigned)(c) - 'A') < 26;
|
88
|
+
}
|
89
|
+
|
90
|
+
CONST_FN
|
91
|
+
static inline int gumbo_ascii_islower(int c) {
|
92
|
+
return gumbo_ascii_isascii(c)
|
93
|
+
&& (_gumbo_ascii_table[c] & GUMBO_ASCII_LOWER_ALPHA);
|
94
|
+
}
|
95
|
+
|
96
|
+
CONST_FN
|
97
|
+
static inline int gumbo_ascii_isalnum(int c) {
|
98
|
+
return gumbo_ascii_isascii(c)
|
99
|
+
&& (_gumbo_ascii_table[c] & GUMBO_ASCII_ALNUM);
|
100
|
+
}
|
101
|
+
|
102
|
+
|
103
|
+
CONST_FN
|
104
|
+
static inline int gumbo_ascii_tolower(int c) {
|
105
|
+
if (gumbo_ascii_isupper(c)) {
|
106
|
+
return c | 32;
|
107
|
+
}
|
108
|
+
return c;
|
109
|
+
}
|
110
|
+
|
111
|
+
#ifdef __cplusplus
|
112
|
+
}
|
113
|
+
#endif
|
114
|
+
|
115
|
+
#endif // GUMBO_ASCII_H_
|
@@ -0,0 +1,42 @@
|
|
1
|
+
/*
|
2
|
+
Copyright 2018 Craig Barnes.
|
3
|
+
Copyright 2010 Google Inc.
|
4
|
+
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
you may not use this file except in compliance with the License.
|
7
|
+
You may obtain a copy of the License at
|
8
|
+
|
9
|
+
https://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
16
|
+
*/
|
17
|
+
|
18
|
+
#include <assert.h>
|
19
|
+
#include <stdlib.h>
|
20
|
+
#include <string.h>
|
21
|
+
#include "attribute.h"
|
22
|
+
#include "ascii.h"
|
23
|
+
#include "util.h"
|
24
|
+
|
25
|
+
GumboAttribute* gumbo_get_attribute (
|
26
|
+
const GumboVector* attributes,
|
27
|
+
const char* name
|
28
|
+
) {
|
29
|
+
for (unsigned int i = 0; i < attributes->length; ++i) {
|
30
|
+
GumboAttribute* attr = attributes->data[i];
|
31
|
+
if (!gumbo_ascii_strcasecmp(attr->name, name)) {
|
32
|
+
return attr;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
return NULL;
|
36
|
+
}
|
37
|
+
|
38
|
+
void gumbo_destroy_attribute(GumboAttribute* attribute) {
|
39
|
+
gumbo_free((void*) attribute->name);
|
40
|
+
gumbo_free((void*) attribute->value);
|
41
|
+
gumbo_free((void*) attribute);
|
42
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#ifndef GUMBO_ATTRIBUTE_H_
|
2
|
+
#define GUMBO_ATTRIBUTE_H_
|
3
|
+
|
4
|
+
#include "gumbo.h"
|
5
|
+
|
6
|
+
#ifdef __cplusplus
|
7
|
+
extern "C" {
|
8
|
+
#endif
|
9
|
+
|
10
|
+
// Release the memory used for a GumboAttribute, including the attribute itself
|
11
|
+
void gumbo_destroy_attribute(GumboAttribute* attribute);
|
12
|
+
|
13
|
+
#ifdef __cplusplus
|
14
|
+
}
|
15
|
+
#endif
|
16
|
+
|
17
|
+
#endif // GUMBO_ATTRIBUTE_H_
|