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,16 @@
|
|
1
|
+
module Nokogiri
|
2
|
+
module XML
|
3
|
+
module SAX
|
4
|
+
###
|
5
|
+
# Context for XML SAX parsers. This class is usually not instantiated
|
6
|
+
# by the user. Instead, you should be looking at
|
7
|
+
# Nokogiri::XML::SAX::Parser
|
8
|
+
class ParserContext
|
9
|
+
def self.new thing, encoding = 'UTF-8'
|
10
|
+
[:read, :close].all? { |x| thing.respond_to?(x) } ?
|
11
|
+
io(thing, Parser::ENCODINGS[encoding]) : memory(thing)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -23,9 +23,15 @@ module Nokogiri
|
|
23
23
|
# parser << "/div>"
|
24
24
|
# parser.finish
|
25
25
|
class PushParser
|
26
|
+
|
27
|
+
# The Nokogiri::XML::SAX::Document on which the PushParser will be
|
28
|
+
# operating
|
26
29
|
attr_accessor :document
|
27
30
|
|
28
|
-
|
31
|
+
###
|
32
|
+
# Create a new PushParser with +doc+ as the SAX Document, providing
|
33
|
+
# an optional +file_name+ and +encoding+
|
34
|
+
def initialize(doc = XML::SAX::Document.new, file_name = nil, encoding = 'UTF-8')
|
29
35
|
@document = doc
|
30
36
|
@encoding = encoding
|
31
37
|
@sax_parser = XML::SAX::Parser.new(doc)
|
@@ -34,11 +40,17 @@ module Nokogiri
|
|
34
40
|
initialize_native(@sax_parser, file_name)
|
35
41
|
end
|
36
42
|
|
43
|
+
###
|
44
|
+
# Write a +chunk+ of XML to the PushParser. Any callback methods
|
45
|
+
# that can be called will be called immediately.
|
37
46
|
def write chunk, last_chunk = false
|
38
47
|
native_write(chunk, last_chunk)
|
39
48
|
end
|
40
49
|
alias :<< :write
|
41
50
|
|
51
|
+
###
|
52
|
+
# Finish the parsing. This method is only necessary for
|
53
|
+
# Nokogiri::XML::SAX::Document#end_document to be called.
|
42
54
|
def finish
|
43
55
|
write '', true
|
44
56
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Nokogiri
|
2
|
+
module XML
|
3
|
+
class << self
|
4
|
+
###
|
5
|
+
# Create a new Nokogiri::XML::Schema object using a +string_or_io+
|
6
|
+
# object.
|
7
|
+
def Schema string_or_io
|
8
|
+
Schema.new(string_or_io)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
###
|
13
|
+
# Nokogiri::XML::Schema is used for validating XML against a schema
|
14
|
+
# (usually from an xsd file).
|
15
|
+
#
|
16
|
+
# == Synopsis
|
17
|
+
#
|
18
|
+
# Validate an XML document against a Schema. Loop over the errors that
|
19
|
+
# are returned and print them out:
|
20
|
+
#
|
21
|
+
# xsd = Nokogiri::XML::Schema(File.read(PO_SCHEMA_FILE))
|
22
|
+
# doc = Nokogiri::XML(File.read(PO_XML_FILE))
|
23
|
+
#
|
24
|
+
# xsd.validate(doc).each do |error|
|
25
|
+
# puts error.message
|
26
|
+
# end
|
27
|
+
#
|
28
|
+
# The list of errors are Nokogiri::XML::SyntaxError objects.
|
29
|
+
class Schema
|
30
|
+
# Errors while parsing the schema file
|
31
|
+
attr_accessor :errors
|
32
|
+
|
33
|
+
###
|
34
|
+
# Create a new Nokogiri::XML::Schema object using a +string_or_io+
|
35
|
+
# object.
|
36
|
+
def self.new string_or_io
|
37
|
+
from_document Nokogiri::XML(string_or_io)
|
38
|
+
end
|
39
|
+
|
40
|
+
###
|
41
|
+
# Validate +thing+ against this schema. +thing+ can be a
|
42
|
+
# Nokogiri::XML::Document object, or a filename. An Array of
|
43
|
+
# Nokogiri::XML::SyntaxError objects found while validating the
|
44
|
+
# +thing+ is returned.
|
45
|
+
def validate thing
|
46
|
+
if thing.is_a?(Nokogiri::XML::Document)
|
47
|
+
validate_document(thing)
|
48
|
+
elsif File.file?(thing)
|
49
|
+
validate_file(thing)
|
50
|
+
else
|
51
|
+
raise ArgumentError, "Must provide Nokogiri::Xml::Document or the name of an existing file"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
###
|
56
|
+
# Returns true if +thing+ is a valid Nokogiri::XML::Document or
|
57
|
+
# file.
|
58
|
+
def valid? thing
|
59
|
+
validate(thing).length == 0
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -1,23 +1,47 @@
|
|
1
1
|
module Nokogiri
|
2
2
|
module XML
|
3
|
+
###
|
4
|
+
# This class provides information about XML SyntaxErrors. These
|
5
|
+
# exceptions are typically stored on Nokogiri::XML::Document#errors.
|
3
6
|
class SyntaxError < ::Nokogiri::SyntaxError
|
7
|
+
attr_reader :domain
|
8
|
+
attr_reader :code
|
9
|
+
attr_reader :level
|
10
|
+
attr_reader :file
|
11
|
+
attr_reader :line
|
12
|
+
attr_reader :str1
|
13
|
+
attr_reader :str2
|
14
|
+
attr_reader :str3
|
15
|
+
attr_reader :int1
|
16
|
+
attr_reader :column
|
17
|
+
|
18
|
+
###
|
19
|
+
# return true if this is a non error
|
4
20
|
def none?
|
5
21
|
level == 0
|
6
22
|
end
|
7
23
|
|
24
|
+
###
|
25
|
+
# return true if this is a warning
|
8
26
|
def warning?
|
9
27
|
level == 1
|
10
28
|
end
|
11
29
|
|
30
|
+
###
|
31
|
+
# return true if this is an error
|
12
32
|
def error?
|
13
33
|
level == 2
|
14
34
|
end
|
15
35
|
|
36
|
+
###
|
37
|
+
# return true if this error is fatal
|
16
38
|
def fatal?
|
17
39
|
level == 3
|
18
40
|
end
|
19
41
|
|
20
|
-
|
42
|
+
def to_s
|
43
|
+
super.chomp
|
44
|
+
end
|
21
45
|
end
|
22
46
|
end
|
23
47
|
end
|
data/lib/nokogiri/xml/text.rb
CHANGED
data/lib/nokogiri/xml/xpath.rb
CHANGED
data/lib/nokogiri/xslt.rb
CHANGED
@@ -1,12 +1,36 @@
|
|
1
1
|
require 'nokogiri/xslt/stylesheet'
|
2
2
|
|
3
3
|
module Nokogiri
|
4
|
+
class << self
|
5
|
+
###
|
6
|
+
# Create a Nokogiri::XSLT::Stylesheet with +stylesheet+.
|
7
|
+
#
|
8
|
+
# Example:
|
9
|
+
#
|
10
|
+
# xslt = Nokogiri::XSLT(File.read(ARGV[0]))
|
11
|
+
#
|
12
|
+
def XSLT stylesheet, modules = {}
|
13
|
+
XSLT.parse(stylesheet, modules)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
###
|
18
|
+
# See Nokogiri::XSLT::Stylesheet for creating and maniuplating
|
19
|
+
# Stylesheet object.
|
4
20
|
module XSLT
|
5
21
|
class << self
|
6
|
-
|
22
|
+
###
|
23
|
+
# Parse the stylesheet in +string+, register any +modules+
|
24
|
+
def parse string, modules = {}
|
25
|
+
modules.each do |url, klass|
|
26
|
+
XSLT.register url, klass
|
27
|
+
end
|
28
|
+
|
7
29
|
Stylesheet.parse_stylesheet_doc(XML.parse(string))
|
8
30
|
end
|
9
|
-
|
31
|
+
|
32
|
+
###
|
33
|
+
# Quote parameters in +params+ for stylesheet safety
|
10
34
|
def quote_params params
|
11
35
|
parray = (params.instance_of?(Hash) ? params.to_a.flatten : params).dup
|
12
36
|
parray.each_with_index do |v,i|
|
@@ -1,6 +1,25 @@
|
|
1
1
|
module Nokogiri
|
2
2
|
module XSLT
|
3
|
+
###
|
4
|
+
# A Stylesheet represents an XSLT Stylesheet object. Stylesheet creation
|
5
|
+
# is done through Nokogiri.XSLT. Here is an example of transforming
|
6
|
+
# an XML::Document with a Stylesheet:
|
7
|
+
#
|
8
|
+
# doc = Nokogiri::XML(File.read('some_file.xml'))
|
9
|
+
# xslt = Nokogir::XSLT(File.read('some_transformer.xslt'))
|
10
|
+
#
|
11
|
+
# puts xslt.transform(doc)
|
12
|
+
#
|
13
|
+
# See Nokogiri::XSLT::Stylesheet#transform for more transformation
|
14
|
+
# information.
|
3
15
|
class Stylesheet
|
16
|
+
###
|
17
|
+
# Apply an XSLT stylesheet to an XML::Document.
|
18
|
+
# +params+ is an array of strings used as XSLT parameters.
|
19
|
+
# returns serialized document
|
20
|
+
def apply_to document, params = []
|
21
|
+
serialize(transform(document, params))
|
22
|
+
end
|
4
23
|
end
|
5
24
|
end
|
6
25
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'nokogiri'
|
2
2
|
|
3
|
-
module XSD
|
4
|
-
module XMLParser
|
3
|
+
module XSD # :nodoc:
|
4
|
+
module XMLParser # :nodoc:
|
5
5
|
###
|
6
6
|
# Nokogiri XML parser for soap4r.
|
7
7
|
#
|
@@ -13,41 +13,77 @@ module XSD
|
|
13
13
|
# Example (using UW ITS Web Services):
|
14
14
|
#
|
15
15
|
# require 'rubygems'
|
16
|
-
# gem 'soap4r'
|
17
16
|
# require 'nokogiri'
|
18
|
-
#
|
17
|
+
# gem 'soap4r'
|
19
18
|
# require 'defaultDriver'
|
20
|
-
#
|
19
|
+
# require 'xsd/xmlparser/nokogiri'
|
20
|
+
#
|
21
21
|
# obj = AvlPortType.new
|
22
|
-
# obj.getLatestByRoute(obj.getAgencies, 8).each do |
|
23
|
-
#
|
22
|
+
# obj.getLatestByRoute(obj.getAgencies.first, 8).each do |bus|
|
23
|
+
# p "#{bus.routeID}, #{bus.longitude}, #{bus.latitude}"
|
24
24
|
# end
|
25
|
+
#
|
25
26
|
class Nokogiri < XSD::XMLParser::Parser
|
27
|
+
###
|
28
|
+
# Create a new XSD parser with +host+ and +opt+
|
26
29
|
def initialize host, opt = {}
|
27
30
|
super
|
28
31
|
@parser = ::Nokogiri::XML::SAX::Parser.new(self, @charset || 'UTF-8')
|
29
32
|
end
|
30
33
|
|
34
|
+
###
|
35
|
+
# Start parsing +string_or_readable+
|
31
36
|
def do_parse string_or_readable
|
32
37
|
@parser.parse(string_or_readable)
|
33
38
|
end
|
34
39
|
|
40
|
+
###
|
41
|
+
# Handle the start_element event with +name+ and +attrs+
|
35
42
|
def start_element name, attrs = []
|
36
|
-
super(name, Hash[*attrs])
|
43
|
+
super(name, Hash[*attrs.flatten])
|
44
|
+
end
|
45
|
+
|
46
|
+
###
|
47
|
+
# Handle the end_element event with +name+
|
48
|
+
def end_element name
|
49
|
+
super
|
37
50
|
end
|
38
51
|
|
52
|
+
###
|
53
|
+
# Handle errors with message +msg+
|
39
54
|
def error msg
|
40
55
|
raise ParseError.new(msg)
|
41
56
|
end
|
42
57
|
alias :warning :error
|
43
58
|
|
59
|
+
###
|
60
|
+
# Handle cdata_blocks containing +string+
|
44
61
|
def cdata_block string
|
45
62
|
characters string
|
46
63
|
end
|
47
64
|
|
48
|
-
|
65
|
+
def start_element_namespace name, attrs = [], prefix = nil, uri = nil, ns = []
|
66
|
+
###
|
67
|
+
# Deal with SAX v1 interface
|
68
|
+
name = [prefix, name].compact.join(':')
|
69
|
+
attributes = ns.map { |ns_prefix,ns_uri|
|
70
|
+
[['xmlns', ns_prefix].compact.join(':'), ns_uri]
|
71
|
+
} + attrs.map { |attr|
|
72
|
+
[[attr.prefix, attr.localname].compact.join(':'), attr.value]
|
73
|
+
}.flatten
|
74
|
+
start_element name, attributes
|
75
|
+
end
|
76
|
+
|
77
|
+
def end_element_namespace name, prefix = nil, uri = nil
|
78
|
+
###
|
79
|
+
# Deal with SAX v1 interface
|
80
|
+
end_element [prefix, name].compact.join(':')
|
81
|
+
end
|
82
|
+
|
83
|
+
%w{ xmldecl start_document end_document comment }.each do |name|
|
49
84
|
class_eval %{ def #{name}(*args); end }
|
50
85
|
end
|
86
|
+
|
51
87
|
add_factory(self)
|
52
88
|
end
|
53
89
|
end
|
@@ -0,0 +1,173 @@
|
|
1
|
+
require 'rake/extensioncompiler'
|
2
|
+
HOST = Rake::ExtensionCompiler.mingw_host
|
3
|
+
TARGET = 'i386-pc-mingw32'
|
4
|
+
|
5
|
+
ZLIB = 'zlib-1.2.5'
|
6
|
+
ICONV = 'libiconv-1.13.1'
|
7
|
+
LIBXML = 'libxml2-2.7.7'
|
8
|
+
LIBXSLT = 'libxslt-1.1.26'
|
9
|
+
RAKE_COMPILER_PKGCONFIG = File.expand_path(File.join(Dir.pwd, "tmp/cross/lib/pkgconfig/"))
|
10
|
+
|
11
|
+
### Build zlib ###
|
12
|
+
file "tmp/cross/download/#{ZLIB}" do |t|
|
13
|
+
FileUtils.mkdir_p('tmp/cross/download')
|
14
|
+
|
15
|
+
file = ZLIB
|
16
|
+
url = "http://zlib.net/#{file}.tar.gz"
|
17
|
+
|
18
|
+
Dir.chdir('tmp/cross/download') do
|
19
|
+
sh "wget #{url} || curl -O #{url}"
|
20
|
+
sh "tar zxvf #{file}.tar.gz"
|
21
|
+
end
|
22
|
+
|
23
|
+
Dir.chdir t.name do
|
24
|
+
mk = File.read('win32/Makefile.gcc')
|
25
|
+
File.open('win32/Makefile.gcc', 'wb') do |f|
|
26
|
+
f.puts "BINARY_PATH = #{CROSS_DIR}/bin"
|
27
|
+
f.puts "LIBRARY_PATH = #{CROSS_DIR}/lib"
|
28
|
+
f.puts "INCLUDE_PATH = #{CROSS_DIR}/include"
|
29
|
+
|
30
|
+
f.puts mk.sub(/^PREFIX\s*=\s*$/, "PREFIX = #{HOST}-") #.
|
31
|
+
#sub(/^SHARED_MODE=0$/, 'SHARED_MODE=1').
|
32
|
+
#sub(/^IMPLIB\s*=.*$/, 'IMPLIB=libz.dll.a')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
file 'tmp/cross/lib/libz.a' => "tmp/cross/download/#{ZLIB}" do |t|
|
38
|
+
Dir.chdir t.prerequisites.first do
|
39
|
+
sh 'make -f win32/Makefile.gcc'
|
40
|
+
sh 'make -f win32/Makefile.gcc install'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
### End build zlib ###
|
44
|
+
|
45
|
+
### Build iconv ###
|
46
|
+
file "tmp/cross/download/#{ICONV}" do |t|
|
47
|
+
FileUtils.mkdir_p('tmp/cross/download')
|
48
|
+
|
49
|
+
file = ICONV
|
50
|
+
url = "http://ftp.gnu.org/pub/gnu/libiconv/#{file}.tar.gz"
|
51
|
+
|
52
|
+
Dir.chdir('tmp/cross/download') do
|
53
|
+
sh "wget #{url} || curl -O #{url}"
|
54
|
+
sh "tar zxvf #{file}.tar.gz"
|
55
|
+
end
|
56
|
+
|
57
|
+
Dir.chdir t.name do
|
58
|
+
sh "./configure --disable-shared --enable-static --host=#{HOST} --target=#{TARGET} --prefix=#{CROSS_DIR} CPPFLAGS='-mno-cygwin -Wall' CFLAGS='-mno-cygwin -O2 -g' CXXFLAGS='-mno-cygwin -O2 -g' LDFLAGS=-mno-cygwin"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
file 'tmp/cross/bin/iconv.exe' => "tmp/cross/download/#{ICONV}" do |t|
|
63
|
+
Dir.chdir t.prerequisites.first do
|
64
|
+
sh 'make'
|
65
|
+
sh 'make install'
|
66
|
+
end
|
67
|
+
end
|
68
|
+
### End build iconv ###
|
69
|
+
|
70
|
+
### Build libxml2 ###
|
71
|
+
file "tmp/cross/download/#{LIBXML}" do |t|
|
72
|
+
FileUtils.mkdir_p('tmp/cross/download')
|
73
|
+
|
74
|
+
file = LIBXML
|
75
|
+
url = "ftp://ftp.xmlsoft.org/libxml2/#{file}.tar.gz"
|
76
|
+
|
77
|
+
Dir.chdir('tmp/cross/download') do
|
78
|
+
sh "wget #{url} || curl -O #{url}"
|
79
|
+
sh "tar zxvf #{file}.tar.gz"
|
80
|
+
end
|
81
|
+
|
82
|
+
Dir.chdir t.name do
|
83
|
+
sh "CFLAGS='-DIN_LIBXML' ./configure --host=#{HOST} --target=#{TARGET} --enable-static --disable-shared --prefix=#{CROSS_DIR} --with-zlib=#{CROSS_DIR} --with-iconv=#{CROSS_DIR} --without-python --without-readline"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
file 'tmp/cross/bin/xml2-config' => "tmp/cross/download/#{LIBXML}" do |t|
|
88
|
+
Dir.chdir t.prerequisites.first do
|
89
|
+
sh 'make LDFLAGS="-avoid-version"'
|
90
|
+
sh 'make install'
|
91
|
+
end
|
92
|
+
end
|
93
|
+
### End build libxml2 ###
|
94
|
+
|
95
|
+
### Build libxslt ###
|
96
|
+
file "tmp/cross/download/#{LIBXSLT}" do |t|
|
97
|
+
FileUtils.mkdir_p('tmp/cross/download')
|
98
|
+
|
99
|
+
file = LIBXSLT
|
100
|
+
url = "ftp://ftp.xmlsoft.org/libxml2/#{file}.tar.gz"
|
101
|
+
|
102
|
+
Dir.chdir('tmp/cross/download') do
|
103
|
+
sh "wget #{url} || curl -O #{url}"
|
104
|
+
sh "tar zxvf #{file}.tar.gz"
|
105
|
+
end
|
106
|
+
|
107
|
+
Dir.chdir t.name do
|
108
|
+
sh "CFLAGS='-DIN_LIBXML' ./configure --host=#{HOST} --target=#{TARGET} --enable-static --disable-shared --prefix=#{CROSS_DIR} --with-libxml-prefix=#{CROSS_DIR} --without-python --without-crypto"
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
file 'tmp/cross/bin/xslt-config' => "tmp/cross/download/#{LIBXSLT}" do |t|
|
113
|
+
Dir.chdir t.prerequisites.first do
|
114
|
+
sh 'make LDFLAGS="-avoid-version"'
|
115
|
+
sh 'make install'
|
116
|
+
end
|
117
|
+
end
|
118
|
+
### End build libxslt ###
|
119
|
+
|
120
|
+
file 'lib/nokogiri/nokogiri.rb' => 'cross:check' do
|
121
|
+
File.open("lib/#{HOE.name}/#{HOE.name}.rb", 'wb') do |f|
|
122
|
+
f.write <<-eoruby
|
123
|
+
require "#{HOE.name}/\#{RUBY_VERSION.sub(/\\.\\d+$/, '')}/#{HOE.name}"
|
124
|
+
eoruby
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
namespace :cross do
|
129
|
+
task :iconv => 'tmp/cross/bin/iconv.exe'
|
130
|
+
task :zlib => 'tmp/cross/lib/libz.a'
|
131
|
+
task :libxml2 => ['cross:zlib', 'cross:iconv', 'tmp/cross/bin/xml2-config']
|
132
|
+
task :libxslt => ['cross:libxml2', 'tmp/cross/bin/xslt-config']
|
133
|
+
|
134
|
+
task :check => ["cross:libxslt"] do
|
135
|
+
unless File.directory?(RAKE_COMPILER_PKGCONFIG)
|
136
|
+
raise RuntimeError.new("looks like rake-compiler changed where pkgconfig info is kept. (#{RAKE_COMPILER_PKGCONFIG})")
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
task :file_list do
|
141
|
+
HOE.spec.extensions = []
|
142
|
+
HOE.spec.files += Dir["lib/#{HOE.name}/#{HOE.name}.rb"]
|
143
|
+
HOE.spec.files += Dir["lib/#{HOE.name}/1.{8,9}/#{HOE.name}.so"]
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
CLOBBER.include("lib/nokogiri/nokogiri.{so,dylib,rb,bundle}")
|
148
|
+
CLOBBER.include("lib/nokogiri/1.{8,9}")
|
149
|
+
|
150
|
+
if Rake::Task.task_defined?(:cross)
|
151
|
+
Rake::Task[:cross].prerequisites << "lib/nokogiri/nokogiri.rb"
|
152
|
+
Rake::Task[:cross].prerequisites << "cross:file_list"
|
153
|
+
end
|
154
|
+
|
155
|
+
desc "build a windows gem without all the ceremony."
|
156
|
+
task "gem:windows" do
|
157
|
+
rake_compiler_config = YAML.load_file("#{ENV['HOME']}/.rake-compiler/config.yml")
|
158
|
+
|
159
|
+
# check that rake-compiler config contains the right patchlevels of 1.8.6 and 1.9.1. see #279.
|
160
|
+
["1.8.6-p383", "1.9.1-p243"].each do |version|
|
161
|
+
majmin, patchlevel = version.split("-")
|
162
|
+
rbconfig = "rbconfig-#{majmin}"
|
163
|
+
unless rake_compiler_config.key?(rbconfig) && rake_compiler_config[rbconfig] =~ /-#{patchlevel}/
|
164
|
+
raise "rake-compiler '#{rbconfig}' not #{patchlevel}. try running 'env --unset=HOST rake-compiler cross-ruby VERSION=#{version}'"
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
# verify that --export-all is in the 1.9.1 rbconfig. see #279,#374,#375.
|
169
|
+
rbconfig_191 = rake_compiler_config["rbconfig-1.9.1"]
|
170
|
+
raise "rbconfig #{rbconfig_191} needs --export-all in its DLDFLAGS value" if File.read(rbconfig_191).grep(/CONFIG\["DLDFLAGS"\].*--export-all/).empty?
|
171
|
+
|
172
|
+
system("env PKG_CONFIG_PATH=#{RAKE_COMPILER_PKGCONFIG} RUBY_CC_VERSION=1.8.6:1.9.1 rake cross native gem") || raise("build failed!")
|
173
|
+
end
|