nokogiri 1.2.3-x86-mswin32-60 → 1.4.5-x86-mswin32-60
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.
- data/.autotest +18 -7
- data/.gemtest +0 -0
- data/CHANGELOG.ja.rdoc +297 -3
- data/CHANGELOG.rdoc +289 -0
- data/Manifest.txt +148 -37
- data/README.ja.rdoc +20 -20
- data/README.rdoc +53 -22
- data/Rakefile +127 -211
- data/bin/nokogiri +54 -0
- data/ext/nokogiri/depend +358 -0
- data/ext/nokogiri/extconf.rb +89 -54
- data/ext/nokogiri/html_document.c +34 -27
- data/ext/nokogiri/html_document.h +1 -1
- data/ext/nokogiri/html_element_description.c +276 -0
- data/ext/nokogiri/html_element_description.h +10 -0
- data/ext/nokogiri/html_entity_lookup.c +7 -5
- data/ext/nokogiri/html_entity_lookup.h +1 -1
- data/ext/nokogiri/html_sax_parser_context.c +94 -0
- data/ext/nokogiri/html_sax_parser_context.h +11 -0
- data/ext/nokogiri/{native.c → nokogiri.c} +31 -7
- data/ext/nokogiri/{native.h → nokogiri.h} +68 -41
- data/ext/nokogiri/xml_attr.c +20 -9
- data/ext/nokogiri/xml_attr.h +1 -1
- data/ext/nokogiri/xml_attribute_decl.c +70 -0
- data/ext/nokogiri/xml_attribute_decl.h +9 -0
- data/ext/nokogiri/xml_cdata.c +21 -9
- data/ext/nokogiri/xml_cdata.h +1 -1
- data/ext/nokogiri/xml_comment.c +18 -6
- data/ext/nokogiri/xml_comment.h +1 -1
- data/ext/nokogiri/xml_document.c +247 -68
- data/ext/nokogiri/xml_document.h +5 -3
- data/ext/nokogiri/xml_document_fragment.c +15 -7
- data/ext/nokogiri/xml_document_fragment.h +1 -1
- data/ext/nokogiri/xml_dtd.c +110 -10
- data/ext/nokogiri/xml_dtd.h +3 -1
- data/ext/nokogiri/xml_element_content.c +123 -0
- data/ext/nokogiri/xml_element_content.h +10 -0
- data/ext/nokogiri/xml_element_decl.c +69 -0
- data/ext/nokogiri/xml_element_decl.h +9 -0
- data/ext/nokogiri/xml_encoding_handler.c +79 -0
- data/ext/nokogiri/xml_encoding_handler.h +8 -0
- data/ext/nokogiri/xml_entity_decl.c +110 -0
- data/ext/nokogiri/xml_entity_decl.h +10 -0
- data/ext/nokogiri/xml_entity_reference.c +16 -5
- data/ext/nokogiri/xml_entity_reference.h +1 -1
- data/ext/nokogiri/xml_io.c +40 -8
- data/ext/nokogiri/xml_io.h +2 -1
- data/ext/nokogiri/xml_libxml2_hacks.c +112 -0
- data/ext/nokogiri/xml_libxml2_hacks.h +12 -0
- data/ext/nokogiri/xml_namespace.c +84 -0
- data/ext/nokogiri/xml_namespace.h +13 -0
- data/ext/nokogiri/xml_node.c +782 -225
- data/ext/nokogiri/xml_node.h +2 -4
- data/ext/nokogiri/xml_node_set.c +253 -34
- data/ext/nokogiri/xml_node_set.h +2 -2
- data/ext/nokogiri/xml_processing_instruction.c +17 -5
- data/ext/nokogiri/xml_processing_instruction.h +1 -1
- data/ext/nokogiri/xml_reader.c +277 -85
- data/ext/nokogiri/xml_reader.h +1 -1
- data/ext/nokogiri/xml_relax_ng.c +168 -0
- data/ext/nokogiri/xml_relax_ng.h +9 -0
- data/ext/nokogiri/xml_sax_parser.c +183 -111
- data/ext/nokogiri/xml_sax_parser.h +30 -1
- data/ext/nokogiri/xml_sax_parser_context.c +199 -0
- data/ext/nokogiri/xml_sax_parser_context.h +10 -0
- data/ext/nokogiri/xml_sax_push_parser.c +42 -12
- data/ext/nokogiri/xml_sax_push_parser.h +1 -1
- data/ext/nokogiri/xml_schema.c +205 -0
- data/ext/nokogiri/xml_schema.h +9 -0
- data/ext/nokogiri/xml_syntax_error.c +28 -173
- data/ext/nokogiri/xml_syntax_error.h +2 -1
- data/ext/nokogiri/xml_text.c +16 -6
- data/ext/nokogiri/xml_text.h +1 -1
- data/ext/nokogiri/xml_xpath_context.c +104 -47
- data/ext/nokogiri/xml_xpath_context.h +1 -1
- data/ext/nokogiri/xslt_stylesheet.c +161 -19
- data/ext/nokogiri/xslt_stylesheet.h +1 -1
- data/lib/nokogiri.rb +47 -8
- data/lib/nokogiri/1.8/nokogiri.so +0 -0
- data/lib/nokogiri/1.9/nokogiri.so +0 -0
- data/lib/nokogiri/css.rb +6 -3
- data/lib/nokogiri/css/node.rb +14 -12
- data/lib/nokogiri/css/parser.rb +665 -62
- data/lib/nokogiri/css/parser.y +20 -10
- data/lib/nokogiri/css/parser_extras.rb +91 -0
- data/lib/nokogiri/css/tokenizer.rb +148 -5
- data/lib/nokogiri/css/tokenizer.rex +10 -9
- data/lib/nokogiri/css/xpath_visitor.rb +47 -44
- data/lib/nokogiri/decorators/slop.rb +8 -4
- data/lib/nokogiri/ffi/encoding_handler.rb +42 -0
- data/lib/nokogiri/ffi/html/document.rb +28 -0
- data/lib/nokogiri/ffi/html/element_description.rb +81 -0
- data/lib/nokogiri/ffi/html/entity_lookup.rb +16 -0
- data/lib/nokogiri/ffi/html/sax/parser_context.rb +38 -0
- data/lib/nokogiri/ffi/io_callbacks.rb +42 -0
- data/lib/nokogiri/ffi/libxml.rb +420 -0
- data/lib/nokogiri/ffi/structs/common_node.rb +38 -0
- data/lib/nokogiri/ffi/structs/html_elem_desc.rb +24 -0
- data/lib/nokogiri/ffi/structs/html_entity_desc.rb +13 -0
- data/lib/nokogiri/ffi/structs/xml_alloc.rb +16 -0
- data/lib/nokogiri/ffi/structs/xml_attr.rb +20 -0
- data/lib/nokogiri/ffi/structs/xml_attribute.rb +27 -0
- data/lib/nokogiri/ffi/structs/xml_buffer.rb +16 -0
- data/lib/nokogiri/ffi/structs/xml_char_encoding_handler.rb +11 -0
- data/lib/nokogiri/ffi/structs/xml_document.rb +117 -0
- data/lib/nokogiri/ffi/structs/xml_dtd.rb +28 -0
- data/lib/nokogiri/ffi/structs/xml_element.rb +26 -0
- data/lib/nokogiri/ffi/structs/xml_element_content.rb +17 -0
- data/lib/nokogiri/ffi/structs/xml_entity.rb +32 -0
- data/lib/nokogiri/ffi/structs/xml_enumeration.rb +12 -0
- data/lib/nokogiri/ffi/structs/xml_node.rb +28 -0
- data/lib/nokogiri/ffi/structs/xml_node_set.rb +53 -0
- data/lib/nokogiri/ffi/structs/xml_notation.rb +11 -0
- data/lib/nokogiri/ffi/structs/xml_ns.rb +15 -0
- data/lib/nokogiri/ffi/structs/xml_parser_context.rb +20 -0
- data/lib/nokogiri/ffi/structs/xml_parser_input.rb +19 -0
- data/lib/nokogiri/ffi/structs/xml_relax_ng.rb +14 -0
- data/lib/nokogiri/ffi/structs/xml_sax_handler.rb +51 -0
- data/lib/nokogiri/ffi/structs/xml_sax_push_parser_context.rb +124 -0
- data/lib/nokogiri/ffi/structs/xml_schema.rb +13 -0
- data/lib/nokogiri/ffi/structs/xml_syntax_error.rb +31 -0
- data/lib/nokogiri/ffi/structs/xml_text_reader.rb +12 -0
- data/lib/nokogiri/ffi/structs/xml_xpath_context.rb +38 -0
- data/lib/nokogiri/ffi/structs/xml_xpath_object.rb +35 -0
- data/lib/nokogiri/ffi/structs/xml_xpath_parser_context.rb +20 -0
- data/lib/nokogiri/ffi/structs/xslt_stylesheet.rb +13 -0
- data/lib/nokogiri/ffi/weak_bucket.rb +40 -0
- data/lib/nokogiri/ffi/xml/attr.rb +41 -0
- data/lib/nokogiri/ffi/xml/attribute_decl.rb +27 -0
- data/lib/nokogiri/ffi/xml/cdata.rb +19 -0
- data/lib/nokogiri/ffi/xml/comment.rb +18 -0
- data/lib/nokogiri/ffi/xml/document.rb +174 -0
- data/lib/nokogiri/ffi/xml/document_fragment.rb +21 -0
- data/lib/nokogiri/ffi/xml/dtd.rb +67 -0
- data/lib/nokogiri/ffi/xml/element_content.rb +43 -0
- data/lib/nokogiri/ffi/xml/element_decl.rb +19 -0
- data/lib/nokogiri/ffi/xml/entity_decl.rb +36 -0
- data/lib/nokogiri/ffi/xml/entity_reference.rb +19 -0
- data/lib/nokogiri/ffi/xml/namespace.rb +44 -0
- data/lib/nokogiri/ffi/xml/node.rb +559 -0
- data/lib/nokogiri/ffi/xml/node_set.rb +150 -0
- data/lib/nokogiri/ffi/xml/processing_instruction.rb +20 -0
- data/lib/nokogiri/ffi/xml/reader.rb +236 -0
- data/lib/nokogiri/ffi/xml/relax_ng.rb +85 -0
- data/lib/nokogiri/ffi/xml/sax/parser.rb +143 -0
- data/lib/nokogiri/ffi/xml/sax/parser_context.rb +79 -0
- data/lib/nokogiri/ffi/xml/sax/push_parser.rb +51 -0
- data/lib/nokogiri/ffi/xml/schema.rb +109 -0
- data/lib/nokogiri/ffi/xml/syntax_error.rb +98 -0
- data/lib/nokogiri/ffi/xml/text.rb +18 -0
- data/lib/nokogiri/ffi/xml/xpath.rb +9 -0
- data/lib/nokogiri/ffi/xml/xpath_context.rb +153 -0
- data/lib/nokogiri/ffi/xslt/stylesheet.rb +77 -0
- data/lib/nokogiri/html.rb +13 -47
- data/lib/nokogiri/html/builder.rb +27 -1
- data/lib/nokogiri/html/document.rb +201 -7
- data/lib/nokogiri/html/document_fragment.rb +41 -0
- data/lib/nokogiri/html/element_description.rb +23 -0
- data/lib/nokogiri/html/entity_lookup.rb +2 -0
- data/lib/nokogiri/html/sax/parser.rb +34 -3
- data/lib/nokogiri/html/sax/parser_context.rb +16 -0
- data/lib/nokogiri/nokogiri.rb +1 -0
- data/lib/nokogiri/version.rb +40 -1
- data/lib/nokogiri/version_warning.rb +14 -0
- data/lib/nokogiri/xml.rb +32 -53
- data/lib/nokogiri/xml/attr.rb +5 -0
- data/lib/nokogiri/xml/attribute_decl.rb +18 -0
- data/lib/nokogiri/xml/builder.rb +349 -29
- data/lib/nokogiri/xml/cdata.rb +3 -1
- data/lib/nokogiri/xml/character_data.rb +7 -0
- data/lib/nokogiri/xml/document.rb +166 -14
- data/lib/nokogiri/xml/document_fragment.rb +76 -1
- data/lib/nokogiri/xml/dtd.rb +16 -3
- data/lib/nokogiri/xml/element_content.rb +36 -0
- data/lib/nokogiri/xml/element_decl.rb +13 -0
- data/lib/nokogiri/xml/entity_decl.rb +19 -0
- data/lib/nokogiri/xml/namespace.rb +13 -0
- data/lib/nokogiri/xml/node.rb +561 -166
- data/lib/nokogiri/xml/node/save_options.rb +22 -2
- data/lib/nokogiri/xml/node_set.rb +202 -40
- data/lib/nokogiri/xml/parse_options.rb +93 -0
- data/lib/nokogiri/xml/pp.rb +2 -0
- data/lib/nokogiri/xml/pp/character_data.rb +18 -0
- data/lib/nokogiri/xml/pp/node.rb +56 -0
- data/lib/nokogiri/xml/processing_instruction.rb +2 -0
- data/lib/nokogiri/xml/reader.rb +93 -8
- data/lib/nokogiri/xml/relax_ng.rb +32 -0
- data/lib/nokogiri/xml/sax.rb +1 -7
- data/lib/nokogiri/xml/sax/document.rb +107 -2
- data/lib/nokogiri/xml/sax/parser.rb +57 -7
- data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
- data/lib/nokogiri/xml/sax/push_parser.rb +13 -1
- data/lib/nokogiri/xml/schema.rb +63 -0
- data/lib/nokogiri/xml/syntax_error.rb +25 -1
- data/lib/nokogiri/xml/text.rb +4 -1
- data/lib/nokogiri/xml/xpath.rb +1 -1
- data/lib/nokogiri/xml/xpath/syntax_error.rb +3 -0
- data/lib/nokogiri/xml/xpath_context.rb +2 -0
- data/lib/nokogiri/xslt.rb +26 -2
- data/lib/nokogiri/xslt/stylesheet.rb +19 -0
- data/lib/xsd/xmlparser/nokogiri.rb +45 -9
- data/tasks/cross_compile.rb +173 -0
- data/tasks/test.rb +25 -69
- data/test/css/test_nthiness.rb +3 -4
- data/test/css/test_parser.rb +75 -20
- data/test/css/test_tokenizer.rb +23 -1
- data/test/css/test_xpath_visitor.rb +10 -1
- data/test/decorators/test_slop.rb +16 -0
- data/test/ffi/test_document.rb +35 -0
- data/test/files/2ch.html +108 -0
- data/test/files/address_book.rlx +12 -0
- data/test/files/address_book.xml +10 -0
- data/test/files/bar/bar.xsd +4 -0
- data/test/files/encoding.html +82 -0
- data/test/files/encoding.xhtml +84 -0
- data/test/files/foo/foo.xsd +4 -0
- data/test/files/po.xml +32 -0
- data/test/files/po.xsd +66 -0
- data/test/files/shift_jis.html +10 -0
- data/test/files/shift_jis.xml +5 -0
- data/test/files/snuggles.xml +3 -0
- data/test/files/staff.dtd +10 -0
- data/test/files/valid_bar.xml +2 -0
- data/test/helper.rb +101 -23
- data/test/html/sax/test_parser.rb +81 -2
- data/test/html/sax/test_parser_context.rb +48 -0
- data/test/html/test_builder.rb +39 -8
- data/test/html/test_document.rb +186 -23
- data/test/html/test_document_encoding.rb +78 -1
- data/test/html/test_document_fragment.rb +253 -0
- data/test/html/test_element_description.rb +98 -0
- data/test/html/test_named_characters.rb +1 -1
- data/test/html/test_node.rb +124 -36
- data/test/html/test_node_encoding.rb +27 -0
- data/test/test_convert_xpath.rb +1 -52
- data/test/test_css_cache.rb +2 -13
- data/test/test_encoding_handler.rb +46 -0
- data/test/test_memory_leak.rb +88 -19
- data/test/test_nokogiri.rb +38 -5
- data/test/test_reader.rb +188 -6
- data/test/test_soap4r_sax.rb +52 -0
- data/test/test_xslt_transforms.rb +183 -83
- data/test/xml/node/test_save_options.rb +1 -1
- data/test/xml/node/test_subclass.rb +44 -0
- data/test/xml/sax/test_parser.rb +175 -4
- data/test/xml/sax/test_parser_context.rb +113 -0
- data/test/xml/sax/test_push_parser.rb +90 -2
- data/test/xml/test_attr.rb +35 -1
- data/test/xml/test_attribute_decl.rb +82 -0
- data/test/xml/test_builder.rb +186 -1
- data/test/xml/test_cdata.rb +32 -1
- data/test/xml/test_comment.rb +13 -1
- data/test/xml/test_document.rb +415 -43
- data/test/xml/test_document_encoding.rb +1 -1
- data/test/xml/test_document_fragment.rb +173 -5
- data/test/xml/test_dtd.rb +61 -6
- data/test/xml/test_dtd_encoding.rb +3 -1
- data/test/xml/test_element_content.rb +56 -0
- data/test/xml/test_element_decl.rb +73 -0
- data/test/xml/test_entity_decl.rb +120 -0
- data/test/xml/test_entity_reference.rb +5 -1
- data/test/xml/test_namespace.rb +68 -0
- data/test/xml/test_node.rb +546 -201
- data/test/xml/test_node_attributes.rb +34 -0
- data/test/xml/test_node_encoding.rb +33 -3
- data/test/xml/test_node_reparenting.rb +321 -0
- data/test/xml/test_node_set.rb +538 -2
- data/test/xml/test_parse_options.rb +52 -0
- data/test/xml/test_processing_instruction.rb +6 -1
- data/test/xml/test_reader_encoding.rb +1 -1
- data/test/xml/test_relax_ng.rb +60 -0
- data/test/xml/test_schema.rb +94 -0
- data/test/xml/test_syntax_error.rb +12 -0
- data/test/xml/test_text.rb +35 -1
- data/test/xml/test_unparented_node.rb +5 -5
- data/test/xml/test_xpath.rb +142 -11
- data/test/xslt/test_custom_functions.rb +94 -0
- metadata +328 -92
- data/ext/nokogiri/html_sax_parser.c +0 -57
- data/ext/nokogiri/html_sax_parser.h +0 -11
- data/ext/nokogiri/iconv.dll +0 -0
- data/ext/nokogiri/libexslt.dll +0 -0
- data/ext/nokogiri/libxml2.dll +0 -0
- data/ext/nokogiri/libxslt.dll +0 -0
- data/ext/nokogiri/native.so +0 -0
- data/ext/nokogiri/xml_xpath.c +0 -53
- data/ext/nokogiri/xml_xpath.h +0 -11
- data/ext/nokogiri/zlib1.dll +0 -0
- data/lib/action-nokogiri.rb +0 -30
- data/lib/nokogiri/css/generated_parser.rb +0 -713
- data/lib/nokogiri/css/generated_tokenizer.rb +0 -144
- data/lib/nokogiri/decorators.rb +0 -2
- data/lib/nokogiri/decorators/hpricot.rb +0 -3
- data/lib/nokogiri/decorators/hpricot/node.rb +0 -56
- data/lib/nokogiri/decorators/hpricot/node_set.rb +0 -54
- data/lib/nokogiri/decorators/hpricot/xpath_visitor.rb +0 -28
- data/lib/nokogiri/hpricot.rb +0 -51
- data/lib/nokogiri/xml/comment.rb +0 -6
- data/lib/nokogiri/xml/element.rb +0 -6
- data/lib/nokogiri/xml/entity_declaration.rb +0 -9
- data/lib/nokogiri/xml/fragment_handler.rb +0 -34
- data/test/hpricot/files/basic.xhtml +0 -17
- data/test/hpricot/files/boingboing.html +0 -2266
- data/test/hpricot/files/cy0.html +0 -3653
- data/test/hpricot/files/immob.html +0 -400
- data/test/hpricot/files/pace_application.html +0 -1320
- data/test/hpricot/files/tenderlove.html +0 -16
- data/test/hpricot/files/uswebgen.html +0 -220
- data/test/hpricot/files/utf8.html +0 -1054
- data/test/hpricot/files/week9.html +0 -1723
- data/test/hpricot/files/why.xml +0 -19
- data/test/hpricot/load_files.rb +0 -11
- data/test/hpricot/test_alter.rb +0 -68
- data/test/hpricot/test_builder.rb +0 -20
- data/test/hpricot/test_parser.rb +0 -426
- data/test/hpricot/test_paths.rb +0 -15
- data/test/hpricot/test_preserved.rb +0 -77
- data/test/hpricot/test_xml.rb +0 -30
- data/test/test_gc.rb +0 -15
@@ -0,0 +1,53 @@
|
|
1
|
+
module Nokogiri
|
2
|
+
module LibXML # :nodoc:
|
3
|
+
|
4
|
+
module XmlNodeSetMixin # :nodoc:
|
5
|
+
def self.included(base)
|
6
|
+
base.class_eval do
|
7
|
+
|
8
|
+
layout(
|
9
|
+
:nodeNr, :int,
|
10
|
+
:nodeMax, :int,
|
11
|
+
:nodeTab, :pointer
|
12
|
+
)
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def document
|
18
|
+
p = self[:doc]
|
19
|
+
p.null? ? nil : LibXML::XmlDocumentCast.new(p)
|
20
|
+
end
|
21
|
+
|
22
|
+
def nodeAt(index)
|
23
|
+
self[:nodeTab].get_pointer(LibXML.pointer_offset(index))
|
24
|
+
end
|
25
|
+
|
26
|
+
def nodeTab
|
27
|
+
self[:nodeTab].null? ? [] : self[:nodeTab].read_array_of_pointer(self[:nodeNr])
|
28
|
+
end
|
29
|
+
|
30
|
+
def nodeTab=(array)
|
31
|
+
# TODO: do we need to check nodeMax and allocate more memory? probably.
|
32
|
+
self[:nodeTab].write_array_of_pointer(array)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
class XmlNodeSet < FFI::ManagedStruct # :nodoc:
|
38
|
+
include XmlNodeSetMixin
|
39
|
+
|
40
|
+
def self.release ptr
|
41
|
+
ns = XmlNodeSetCast.new(ptr)
|
42
|
+
LibXML.xmlFree ns[:nodeTab] if ns[:nodeTab]
|
43
|
+
LibXML.xmlFree ptr
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
class XmlNodeSetCast < FFI::Struct # :nodoc:
|
49
|
+
include XmlNodeSetMixin
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Nokogiri
|
2
|
+
module LibXML # :nodoc:
|
3
|
+
class XmlNs < FFI::Struct # :nodoc:
|
4
|
+
layout(
|
5
|
+
:next, :pointer,
|
6
|
+
:type, :int,
|
7
|
+
:href, :string,
|
8
|
+
:prefix, :string,
|
9
|
+
:_private, :long # actually a pointer we're casting as an integer
|
10
|
+
)
|
11
|
+
|
12
|
+
include CommonNode
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Nokogiri
|
2
|
+
# :stopdoc:
|
3
|
+
module LibXML
|
4
|
+
class XmlParserContext < FFI::Struct
|
5
|
+
layout(
|
6
|
+
:sax, :pointer,
|
7
|
+
:userData, :pointer,
|
8
|
+
:myDoc, :pointer,
|
9
|
+
:wellFormed, :int,
|
10
|
+
:replaceEntities, :int,
|
11
|
+
:version, :string,
|
12
|
+
:encoding, :string,
|
13
|
+
:standalone, :int,
|
14
|
+
:html, :int,
|
15
|
+
:input, :pointer
|
16
|
+
)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
# :startdoc:
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Nokogiri
|
2
|
+
# :stopdoc:
|
3
|
+
module LibXML
|
4
|
+
class XmlParserInput < FFI::Struct
|
5
|
+
layout(
|
6
|
+
:buf, :pointer,
|
7
|
+
:filename, :pointer,
|
8
|
+
:directory, :pointer,
|
9
|
+
:base, :pointer,
|
10
|
+
:cur, :pointer,
|
11
|
+
:end, :pointer,
|
12
|
+
:length, :int,
|
13
|
+
:line, :int,
|
14
|
+
:col, :int
|
15
|
+
)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
# :startdoc:
|
19
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Nokogiri
|
2
|
+
module LibXML # :nodoc:
|
3
|
+
class XmlSaxHandler < FFI::ManagedStruct # :nodoc:
|
4
|
+
|
5
|
+
XML_SAX2_MAGIC = 0xDEEDBEAF # see, the libxml2 authors DO have a sense of humor. i think.
|
6
|
+
|
7
|
+
layout(:internalSubset, :pointer,
|
8
|
+
:isStandalone, :pointer,
|
9
|
+
:hasInternalSubset, :pointer,
|
10
|
+
:hasExternalSubset, :pointer,
|
11
|
+
:resolveEntity, :pointer,
|
12
|
+
:getEntity, :pointer,
|
13
|
+
:entityDecl, :pointer,
|
14
|
+
:notationDecl, :pointer,
|
15
|
+
:attributeDecl, :pointer,
|
16
|
+
:elementDecl, :pointer,
|
17
|
+
:unparsedEntityDecl, :pointer,
|
18
|
+
:setDocumentLocator, :pointer,
|
19
|
+
:startDocument, :start_document_sax_func,
|
20
|
+
:endDocument, :end_document_sax_func ,
|
21
|
+
:startElement, :start_element_sax_func,
|
22
|
+
:endElement, :end_element_sax_func,
|
23
|
+
:reference, :pointer,
|
24
|
+
:characters, :characters_sax_func,
|
25
|
+
:ignorableWhitespace, :pointer,
|
26
|
+
:processingInstruction, :pointer,
|
27
|
+
:comment, :comment_sax_func,
|
28
|
+
:warning, :warning_sax_func,
|
29
|
+
:error, :error_sax_func,
|
30
|
+
:fatalError, :pointer,
|
31
|
+
:getParameterEntity, :pointer,
|
32
|
+
:cdataBlock, :cdata_block_sax_func,
|
33
|
+
:externalSubset, :pointer,
|
34
|
+
:initialized, :uint,
|
35
|
+
:_private, :pointer,
|
36
|
+
:startElementNs, :start_element_ns_sax2_func,
|
37
|
+
:endElementNs, :end_element_ns_sax2_func,
|
38
|
+
:serror, :syntax_error_handler
|
39
|
+
)
|
40
|
+
|
41
|
+
def self.allocate
|
42
|
+
new LibXML.calloc(1, LibXML::XmlSaxHandler.size)
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.release ptr
|
46
|
+
LibXML.free(ptr)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
module Nokogiri
|
2
|
+
# :stopdoc:
|
3
|
+
module LibXML
|
4
|
+
class XmlSaxPushParserContext < FFI::ManagedStruct
|
5
|
+
|
6
|
+
layout(
|
7
|
+
:sax, :pointer, # struct _xmlSAXHandler *sax; /* The SAX handler */
|
8
|
+
:userData, :pointer, # void *userData; /* For SAX interface only, used by DOM build */
|
9
|
+
:myDoc, :pointer, # xmlDocPtr myDoc; /* the document being built */
|
10
|
+
:wellFormed, :int, # int wellFormed; /* is the document well formed */
|
11
|
+
:replaceEntities, :int, # int replaceEntities; /* shall we replace entities ? */
|
12
|
+
:version, :pointer, # const xmlChar *version; /* the XML version string */
|
13
|
+
:encoding, :pointer, # const xmlChar *encoding; /* the declared encoding, if any */
|
14
|
+
:standalone, :int, # int standalone; /* standalone document */
|
15
|
+
:html, :int, # int html; /* an HTML(1)/Docbook(2) document
|
16
|
+
|
17
|
+
:input, :pointer, # xmlParserInputPtr input; /* Current input stream */
|
18
|
+
:inputNr, :int, # int inputNr; /* Number of current input streams */
|
19
|
+
:inputMax, :int, # int inputMax; /* Max number of input streams */
|
20
|
+
:inputTab, :pointer, # xmlParserInputPtr *inputTab; /* stack of inputs */
|
21
|
+
|
22
|
+
:node, :pointer, # xmlNodePtr node; /* Current parsed Node */
|
23
|
+
:nodeNr, :int, # int nodeNr; /* Depth of the parsing stack */
|
24
|
+
:nodeMax, :int, # int nodeMax; /* Max depth of the parsing stack */
|
25
|
+
:nodeTab, :pointer, # xmlNodePtr *nodeTab; /* array of nodes */
|
26
|
+
|
27
|
+
:record_info, :int, # int record_info; /* Whether node info should be kept */
|
28
|
+
|
29
|
+
# xmlParserNodeInfoSeq node_seq; /* info about each node parsed */
|
30
|
+
:node_seq_maximum, :ulong,
|
31
|
+
:node_seq_length, :ulong,
|
32
|
+
:node_seq_buffer, :pointer,
|
33
|
+
|
34
|
+
:errNo, :int, # int errNo; /* error code */
|
35
|
+
|
36
|
+
:hasExternalSubset, :int, # int hasExternalSubset; /* reference and external subset */
|
37
|
+
:hasPErefs, :int, # int hasPErefs; /* the internal subset has PE refs */
|
38
|
+
:external, :int, # int external; /* are we parsing an external entity */
|
39
|
+
|
40
|
+
:valid, :int, # int valid; /* is the document valid */
|
41
|
+
:validate, :int, # int validate; /* shall we try to validate ? */
|
42
|
+
|
43
|
+
# xmlValidCtxt vctxt; /* The validity context */
|
44
|
+
:vctxt_userData, :pointer, # void *userData; /* user specific data block */
|
45
|
+
:vctxt_error, :pointer, # xmlValidityErrorFunc error; /* the callback in case of errors */
|
46
|
+
:vctxt_warning, :pointer, # xmlValidityWarningFunc warning; /* the callback in case of warning */
|
47
|
+
:vctxt_node, :pointer, # xmlNodePtr node; /* Current parsed Node */
|
48
|
+
:vctxt_nodeNr, :int, # int nodeNr; /* Depth of the parsing stack */
|
49
|
+
:vctxt_nodeMax, :int, # int nodeMax; /* Max depth of the parsing stack */
|
50
|
+
:vctxt_nodeTab, :pointer, # xmlNodePtr *nodeTab; /* array of nodes */
|
51
|
+
|
52
|
+
:vctxt_finishDtd, :int, # unsigned int finishDtd; /* finished validating the Dtd ? */
|
53
|
+
:vctxt_doc, :pointer, # xmlDocPtr doc; /* the document */
|
54
|
+
:vctxt_valid, :int, # int valid; /* temporary validity check result */
|
55
|
+
:vctxt_vstate, :pointer, # xmlValidState *vstate; /* current state */
|
56
|
+
:vctxt_vstatNr, :int, # int vstateNr; /* Depth of the validation stack */
|
57
|
+
:vctxt_vstateMax, :int, # int vstateMax; /* Max depth of the validation stack */
|
58
|
+
:vctxt_vstateTab, :pointer, # xmlValidState *vstateTab; /* array of validation states */
|
59
|
+
:vctxt_am, :pointer, # xmlAutomataPtr am; /* the automata */
|
60
|
+
:vctxt_state, :pointer, # xmlAutomataStatePtr state; /* used to build the automata */
|
61
|
+
|
62
|
+
:instate, :int, # xmlParserInputState instate; /* current type of input */
|
63
|
+
:token, :int, # int token; /* next char look-ahead */
|
64
|
+
|
65
|
+
:directory, :pointer, # char *directory; /* the data directory */
|
66
|
+
:name, :pointer, # const xmlChar *name; /* Current parsed Node */
|
67
|
+
:nameNr, :int, # int nameNr; /* Depth of the parsing stack */
|
68
|
+
:nameMax, :int, # int nameMax; /* Max depth of the parsing stack */
|
69
|
+
:nameTab, :pointer, # const xmlChar * *nameTab; /* array of nodes */
|
70
|
+
|
71
|
+
:nbChars, :long, # long nbChars; /* number of xmlChar processed */
|
72
|
+
:checkIndex, :long, # long checkIndex; /* used by progressive parsing lookup */
|
73
|
+
:keepBlanks, :int, # int keepBlanks; /* ugly but ... */
|
74
|
+
:disableSAX, :int, # int disableSAX; /* SAX callbacks are disabled */
|
75
|
+
:inSubset, :int, # int inSubset; /* Parsing is in int 1/ext 2 subset */
|
76
|
+
:intSubName, :pointer, # const xmlChar * intSubName; /* name of subset */
|
77
|
+
:extSubURI, :pointer, # xmlChar * extSubURI; /* URI of external subset */
|
78
|
+
:extSubSystem, :pointer, # xmlChar * extSubSystem; /* SYSTEM ID of external subset */
|
79
|
+
|
80
|
+
:space, :pointer, # int * space; /* Should the parser preserve spaces */
|
81
|
+
:spaceNr, :int, # int spaceNr; /* Depth of the parsing stack */
|
82
|
+
:spaceMax, :int, # int spaceMax; /* Max depth of the parsing stack */
|
83
|
+
:spaceTab, :pointer, # int * spaceTab; /* array of space infos */
|
84
|
+
:depth, :int, # int depth; /* to prevent entity substitution loops */
|
85
|
+
:entity, :pointer, # xmlParserInputPtr entity; /* used to check entities boundaries */
|
86
|
+
:charset, :int, # int charset; /* encoding of the in-memory content
|
87
|
+
:nodelen, :int, # int nodelen; /* Those two fields are there to */
|
88
|
+
:nodemem, :int, # int nodemem; /* Speed up large node parsing */
|
89
|
+
:pedantic, :int, # int pedantic; /* signal pedantic warnings */
|
90
|
+
:_private, :pointer, # void *_private; /* For user data, libxml won't touch it */
|
91
|
+
|
92
|
+
:loadsubset, :int, # int loadsubset; /* should the external subset be loaded */
|
93
|
+
:linenumbers, :int, # int linenumbers; /* set line number in element content */
|
94
|
+
:catalogs, :pointer, # void *catalogs; /* document's own catalog */
|
95
|
+
:recovery, :int, # int recovery; /* run in recovery mode */
|
96
|
+
:progressive, :int, # int progressive; /* is this a progressive parsing */
|
97
|
+
:dict, :pointer, # xmlDictPtr dict; /* dictionnary for the parser */
|
98
|
+
:atts, :pointer, # const xmlChar * *atts; /* array for the attributes callbacks */
|
99
|
+
:maxatts, :int, # int maxatts; /* the size of the array */
|
100
|
+
:docdict, :int, # int docdict; /* use strings from dict to build tree */
|
101
|
+
:str_xml, :pointer, # const xmlChar *str_xml;
|
102
|
+
:str_xmlns, :pointer, # const xmlChar *str_xmlns;
|
103
|
+
:str_xml_ns, :pointer, # const xmlChar *str_xml_ns;
|
104
|
+
|
105
|
+
:sax2, :int, # int sax2; /* operating in the new SAX mode */
|
106
|
+
:nsNr, :int, # int nsNr; /* the number of inherited namespaces */
|
107
|
+
:nsMax, :int, # int nsMax; /* the size of the arrays */
|
108
|
+
:nsTab, :pointer, # const xmlChar * *nsTab; /* the array of prefix/namespace name */
|
109
|
+
:attallocs, :pointer, # int *attallocs; /* which attribute were allocated */
|
110
|
+
:pushTab, :pointer, # void * *pushTab; /* array of data for push */
|
111
|
+
:attsDefault, :pointer, # xmlHashTablePtr attsDefault; /* defaulted attributes if any */
|
112
|
+
:attsSpecial, :pointer, # xmlHashTablePtr attsSpecial; /* non-CDATA attributes if any */
|
113
|
+
:nsWellFormed, :int, # int nsWellFormed; /* is the document XML Nanespace okay */
|
114
|
+
:options, :int # int options; /* Extra options */
|
115
|
+
)
|
116
|
+
|
117
|
+
def self.release ptr
|
118
|
+
LibXML.xmlFreeParserCtxt(ptr)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
123
|
+
# :startdoc:
|
124
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Nokogiri
|
2
|
+
module LibXML # :nodoc:
|
3
|
+
class XmlSyntaxError < FFI::ManagedStruct # :nodoc:
|
4
|
+
|
5
|
+
layout(
|
6
|
+
:domain, :int,
|
7
|
+
:code, :int,
|
8
|
+
:message, :pointer,
|
9
|
+
:level, :int,
|
10
|
+
:file, :string,
|
11
|
+
:line, :int,
|
12
|
+
:str1, :string,
|
13
|
+
:str2, :string,
|
14
|
+
:str3, :string,
|
15
|
+
:int1, :int,
|
16
|
+
:int2, :int,
|
17
|
+
:ctxt, :pointer,
|
18
|
+
:node, :pointer
|
19
|
+
)
|
20
|
+
|
21
|
+
def self.allocate
|
22
|
+
LibXML.calloc(1, LibXML::XmlSyntaxError.size)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.release(ptr)
|
26
|
+
LibXML.free(ptr)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Nokogiri
|
2
|
+
module LibXML # :nodoc:
|
3
|
+
module XmlXpathContextMixin # :nodoc:
|
4
|
+
def self.included(base)
|
5
|
+
base.class_eval do
|
6
|
+
|
7
|
+
layout(
|
8
|
+
:doc, :pointer,
|
9
|
+
:node, :pointer
|
10
|
+
)
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def node
|
16
|
+
LibXML::XmlNode.new(self[:node])
|
17
|
+
end
|
18
|
+
|
19
|
+
def document
|
20
|
+
p = self[:doc]
|
21
|
+
p.null? ? nil : LibXML::XmlDocumentCast.new(p)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class XmlXpathContext < FFI::ManagedStruct # :nodoc:
|
26
|
+
include XmlXpathContextMixin
|
27
|
+
|
28
|
+
def self.release ptr
|
29
|
+
LibXML.xmlXPathFreeContext(ptr)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class XmlXpathContextCast < FFI::Struct # :nodoc:
|
34
|
+
include XmlXpathContextMixin
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Nokogiri
|
2
|
+
module LibXML # :nodoc:
|
3
|
+
|
4
|
+
class XmlXpathObject < FFI::ManagedStruct # :nodoc:
|
5
|
+
|
6
|
+
XPATH_UNDEFINED = 0
|
7
|
+
XPATH_NODESET = 1
|
8
|
+
XPATH_BOOLEAN = 2
|
9
|
+
XPATH_NUMBER = 3
|
10
|
+
XPATH_STRING = 4
|
11
|
+
XPATH_POINT = 5
|
12
|
+
XPATH_RANGE = 6
|
13
|
+
XPATH_LOCATIONSET = 7
|
14
|
+
XPATH_USERS = 8
|
15
|
+
XPATH_XSLT_TREE = 9
|
16
|
+
|
17
|
+
layout(
|
18
|
+
:type, :int,
|
19
|
+
:nodesetval, :pointer,
|
20
|
+
:boolval, :int,
|
21
|
+
:floatval, :double,
|
22
|
+
:stringval, :string,
|
23
|
+
:user, :pointer,
|
24
|
+
:index, :int,
|
25
|
+
:user2, :pointer,
|
26
|
+
:index2, :int
|
27
|
+
)
|
28
|
+
|
29
|
+
def self.release ptr
|
30
|
+
LibXML.xmlXPathFreeNodeSetList(ptr) # despite the name, this frees the xpath but not the contained node set
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|