nokogiri 1.0.0 → 1.6.8.1
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 +7 -0
- data/.autotest +26 -0
- data/.cross_rubies +9 -0
- data/.editorconfig +17 -0
- data/.gemtest +0 -0
- data/.travis.yml +51 -0
- data/CHANGELOG.rdoc +1160 -0
- data/CONTRIBUTING.md +42 -0
- data/C_CODING_STYLE.rdoc +33 -0
- data/Gemfile +22 -0
- data/LICENSE.txt +31 -0
- data/Manifest.txt +284 -40
- data/README.md +166 -0
- data/ROADMAP.md +111 -0
- data/Rakefile +310 -199
- data/STANDARD_RESPONSES.md +47 -0
- data/Y_U_NO_GEMSPEC.md +155 -0
- data/appveyor.yml +22 -0
- data/bin/nokogiri +118 -0
- data/build_all +45 -0
- data/dependencies.yml +29 -0
- data/ext/nokogiri/depend +358 -0
- data/ext/nokogiri/extconf.rb +664 -34
- data/ext/nokogiri/html_document.c +120 -33
- data/ext/nokogiri/html_document.h +1 -1
- data/ext/nokogiri/html_element_description.c +279 -0
- data/ext/nokogiri/html_element_description.h +10 -0
- data/ext/nokogiri/html_entity_lookup.c +32 -0
- data/ext/nokogiri/html_entity_lookup.h +8 -0
- data/ext/nokogiri/html_sax_parser_context.c +116 -0
- data/ext/nokogiri/html_sax_parser_context.h +11 -0
- data/ext/nokogiri/html_sax_push_parser.c +87 -0
- data/ext/nokogiri/html_sax_push_parser.h +9 -0
- data/ext/nokogiri/nokogiri.c +145 -0
- data/ext/nokogiri/nokogiri.h +131 -0
- data/ext/nokogiri/xml_attr.c +94 -0
- data/ext/nokogiri/xml_attr.h +9 -0
- data/ext/nokogiri/xml_attribute_decl.c +70 -0
- data/ext/nokogiri/xml_attribute_decl.h +9 -0
- data/ext/nokogiri/xml_cdata.c +23 -19
- data/ext/nokogiri/xml_cdata.h +1 -1
- data/ext/nokogiri/xml_comment.c +69 -0
- data/ext/nokogiri/xml_comment.h +9 -0
- data/ext/nokogiri/xml_document.c +501 -54
- data/ext/nokogiri/xml_document.h +14 -1
- data/ext/nokogiri/xml_document_fragment.c +48 -0
- data/ext/nokogiri/xml_document_fragment.h +10 -0
- data/ext/nokogiri/xml_dtd.c +109 -24
- 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 +52 -0
- data/ext/nokogiri/xml_entity_reference.h +9 -0
- data/ext/nokogiri/xml_io.c +60 -0
- data/ext/nokogiri/xml_io.h +11 -0
- data/ext/nokogiri/xml_libxml2_hacks.c +112 -0
- data/ext/nokogiri/xml_libxml2_hacks.h +12 -0
- data/ext/nokogiri/xml_namespace.c +117 -0
- data/ext/nokogiri/xml_namespace.h +13 -0
- data/ext/nokogiri/xml_node.c +1285 -315
- data/ext/nokogiri/xml_node.h +4 -6
- data/ext/nokogiri/xml_node_set.c +415 -54
- data/ext/nokogiri/xml_node_set.h +6 -2
- data/ext/nokogiri/xml_processing_instruction.c +56 -0
- data/ext/nokogiri/xml_processing_instruction.h +9 -0
- data/ext/nokogiri/xml_reader.c +316 -77
- data/ext/nokogiri/xml_reader.h +1 -1
- data/ext/nokogiri/xml_relax_ng.c +161 -0
- data/ext/nokogiri/xml_relax_ng.h +9 -0
- data/ext/nokogiri/xml_sax_parser.c +215 -80
- data/ext/nokogiri/xml_sax_parser.h +30 -1
- data/ext/nokogiri/xml_sax_parser_context.c +262 -0
- data/ext/nokogiri/xml_sax_parser_context.h +10 -0
- data/ext/nokogiri/xml_sax_push_parser.c +115 -0
- data/ext/nokogiri/xml_sax_push_parser.h +9 -0
- data/ext/nokogiri/xml_schema.c +205 -0
- data/ext/nokogiri/xml_schema.h +9 -0
- data/ext/nokogiri/xml_syntax_error.c +45 -175
- data/ext/nokogiri/xml_syntax_error.h +4 -2
- data/ext/nokogiri/xml_text.c +37 -14
- data/ext/nokogiri/xml_text.h +1 -1
- data/ext/nokogiri/xml_xpath_context.c +230 -13
- data/ext/nokogiri/xml_xpath_context.h +2 -1
- data/ext/nokogiri/xslt_stylesheet.c +196 -34
- data/ext/nokogiri/xslt_stylesheet.h +6 -1
- data/lib/nokogiri/css/node.rb +18 -61
- data/lib/nokogiri/css/parser.rb +725 -17
- data/lib/nokogiri/css/parser.y +126 -63
- data/lib/nokogiri/css/parser_extras.rb +91 -0
- data/lib/nokogiri/css/syntax_error.rb +7 -0
- data/lib/nokogiri/css/tokenizer.rb +148 -5
- data/lib/nokogiri/css/tokenizer.rex +31 -39
- data/lib/nokogiri/css/xpath_visitor.rb +109 -51
- data/lib/nokogiri/css.rb +24 -3
- data/lib/nokogiri/decorators/slop.rb +42 -0
- data/lib/nokogiri/html/builder.rb +27 -1
- data/lib/nokogiri/html/document.rb +329 -3
- data/lib/nokogiri/html/document_fragment.rb +39 -0
- data/lib/nokogiri/html/element_description.rb +23 -0
- data/lib/nokogiri/html/element_description_defaults.rb +671 -0
- data/lib/nokogiri/html/entity_lookup.rb +13 -0
- data/lib/nokogiri/html/sax/parser.rb +35 -4
- data/lib/nokogiri/html/sax/parser_context.rb +16 -0
- data/lib/nokogiri/html/sax/push_parser.rb +36 -0
- data/lib/nokogiri/html.rb +18 -76
- data/lib/nokogiri/syntax_error.rb +4 -0
- data/lib/nokogiri/version.rb +106 -1
- data/lib/nokogiri/xml/attr.rb +14 -0
- data/lib/nokogiri/xml/attribute_decl.rb +18 -0
- data/lib/nokogiri/xml/builder.rb +395 -31
- data/lib/nokogiri/xml/cdata.rb +4 -2
- data/lib/nokogiri/xml/character_data.rb +7 -0
- data/lib/nokogiri/xml/document.rb +267 -12
- data/lib/nokogiri/xml/document_fragment.rb +149 -0
- data/lib/nokogiri/xml/dtd.rb +27 -1
- 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/save_options.rb +61 -0
- data/lib/nokogiri/xml/node.rb +748 -109
- data/lib/nokogiri/xml/node_set.rb +200 -72
- data/lib/nokogiri/xml/parse_options.rb +120 -0
- data/lib/nokogiri/xml/pp/character_data.rb +18 -0
- data/lib/nokogiri/xml/pp/node.rb +56 -0
- data/lib/nokogiri/xml/pp.rb +2 -0
- data/lib/nokogiri/xml/processing_instruction.rb +8 -0
- data/lib/nokogiri/xml/reader.rb +102 -4
- data/lib/nokogiri/xml/relax_ng.rb +32 -0
- data/lib/nokogiri/xml/sax/document.rb +114 -2
- data/lib/nokogiri/xml/sax/parser.rb +97 -7
- data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
- data/lib/nokogiri/xml/sax/push_parser.rb +60 -0
- data/lib/nokogiri/xml/sax.rb +2 -7
- data/lib/nokogiri/xml/schema.rb +63 -0
- data/lib/nokogiri/xml/searchable.rb +221 -0
- data/lib/nokogiri/xml/syntax_error.rb +27 -1
- data/lib/nokogiri/xml/text.rb +4 -1
- data/lib/nokogiri/xml/xpath/syntax_error.rb +11 -0
- data/lib/nokogiri/xml/xpath.rb +4 -0
- data/lib/nokogiri/xml/xpath_context.rb +3 -1
- data/lib/nokogiri/xml.rb +45 -38
- data/lib/nokogiri/xslt/stylesheet.rb +19 -0
- data/lib/nokogiri/xslt.rb +47 -2
- data/lib/nokogiri.rb +117 -24
- data/lib/xsd/xmlparser/nokogiri.rb +102 -0
- data/patches/sort-patches-by-date +25 -0
- data/ports/archives/libxml2-2.9.4.tar.gz +0 -0
- data/ports/archives/libxslt-1.1.29.tar.gz +0 -0
- data/suppressions/README.txt +1 -0
- data/suppressions/nokogiri_ree-1.8.7.358.supp +61 -0
- data/suppressions/nokogiri_ruby-1.8.7.370.supp +0 -0
- data/suppressions/nokogiri_ruby-1.9.2.320.supp +28 -0
- data/suppressions/nokogiri_ruby-1.9.3.327.supp +28 -0
- data/tasks/test.rb +100 -0
- data/test/css/test_nthiness.rb +73 -6
- data/test/css/test_parser.rb +184 -39
- data/test/css/test_tokenizer.rb +72 -19
- data/test/css/test_xpath_visitor.rb +44 -2
- data/test/decorators/test_slop.rb +20 -0
- data/test/files/2ch.html +108 -0
- data/test/files/GH_1042.html +18 -0
- data/test/files/address_book.rlx +12 -0
- data/test/files/address_book.xml +10 -0
- data/test/files/atom.xml +344 -0
- data/test/files/bar/bar.xsd +4 -0
- data/test/files/bogus.xml +0 -0
- data/test/files/dont_hurt_em_why.xml +422 -0
- data/test/files/encoding.html +82 -0
- data/test/files/encoding.xhtml +84 -0
- data/test/files/exslt.xml +8 -0
- data/test/files/exslt.xslt +35 -0
- data/test/files/foo/foo.xsd +4 -0
- data/test/files/metacharset.html +10 -0
- data/test/files/namespace_pressure_test.xml +1684 -0
- data/test/files/noencoding.html +47 -0
- data/test/files/po.xml +32 -0
- data/test/files/po.xsd +66 -0
- data/test/files/saml/saml20assertion_schema.xsd +283 -0
- data/test/files/saml/saml20protocol_schema.xsd +302 -0
- data/test/files/saml/xenc_schema.xsd +146 -0
- data/test/files/saml/xmldsig_schema.xsd +318 -0
- data/test/files/shift_jis.html +10 -0
- data/test/files/shift_jis.xml +5 -0
- data/test/files/shift_jis_no_charset.html +9 -0
- data/test/files/slow-xpath.xml +25509 -0
- data/test/files/snuggles.xml +3 -0
- data/test/files/staff.dtd +10 -0
- data/test/files/test_document_url/bar.xml +2 -0
- data/test/files/test_document_url/document.dtd +4 -0
- data/test/files/test_document_url/document.xml +6 -0
- data/test/files/tlm.html +2 -1
- data/test/files/to_be_xincluded.xml +2 -0
- data/test/files/valid_bar.xml +2 -0
- data/test/files/xinclude.xml +4 -0
- data/test/helper.rb +124 -13
- data/test/html/sax/test_parser.rb +118 -4
- data/test/html/sax/test_parser_context.rb +46 -0
- data/test/html/sax/test_push_parser.rb +87 -0
- data/test/html/test_builder.rb +94 -8
- data/test/html/test_document.rb +626 -11
- data/test/html/test_document_encoding.rb +145 -0
- data/test/html/test_document_fragment.rb +301 -0
- data/test/html/test_element_description.rb +105 -0
- data/test/html/test_named_characters.rb +14 -0
- data/test/html/test_node.rb +212 -0
- data/test/html/test_node_encoding.rb +85 -0
- data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +14 -0
- data/test/namespaces/test_namespaces_aliased_default.rb +24 -0
- data/test/namespaces/test_namespaces_in_builder_doc.rb +75 -0
- data/test/namespaces/test_namespaces_in_cloned_doc.rb +31 -0
- data/test/namespaces/test_namespaces_in_created_doc.rb +75 -0
- data/test/namespaces/test_namespaces_in_parsed_doc.rb +80 -0
- data/test/namespaces/test_namespaces_preservation.rb +31 -0
- data/test/test_convert_xpath.rb +2 -47
- data/test/test_css_cache.rb +45 -0
- data/test/test_encoding_handler.rb +48 -0
- data/test/test_memory_leak.rb +156 -0
- data/test/test_nokogiri.rb +103 -1
- data/test/test_soap4r_sax.rb +52 -0
- data/test/test_xslt_transforms.rb +293 -8
- data/test/xml/node/test_save_options.rb +28 -0
- data/test/xml/node/test_subclass.rb +44 -0
- data/test/xml/sax/test_parser.rb +309 -8
- data/test/xml/sax/test_parser_context.rb +115 -0
- data/test/xml/sax/test_push_parser.rb +157 -0
- data/test/xml/test_attr.rb +67 -0
- data/test/xml/test_attribute_decl.rb +86 -0
- data/test/xml/test_builder.rb +327 -2
- data/test/xml/test_c14n.rb +180 -0
- data/test/xml/test_cdata.rb +32 -2
- data/test/xml/test_comment.rb +40 -0
- data/test/xml/test_document.rb +846 -35
- data/test/xml/test_document_encoding.rb +31 -0
- data/test/xml/test_document_fragment.rb +271 -0
- data/test/xml/test_dtd.rb +153 -9
- data/test/xml/test_dtd_encoding.rb +31 -0
- 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 +122 -0
- data/test/xml/test_entity_reference.rb +251 -0
- data/test/xml/test_namespace.rb +96 -0
- data/test/xml/test_node.rb +1126 -105
- data/test/xml/test_node_attributes.rb +115 -0
- data/test/xml/test_node_encoding.rb +69 -0
- data/test/xml/test_node_inheritance.rb +32 -0
- data/test/xml/test_node_reparenting.rb +549 -0
- data/test/xml/test_node_set.rb +668 -9
- data/test/xml/test_parse_options.rb +64 -0
- data/test/xml/test_processing_instruction.rb +30 -0
- data/test/xml/test_reader.rb +589 -0
- data/test/xml/test_reader_encoding.rb +134 -0
- data/test/xml/test_relax_ng.rb +60 -0
- data/test/xml/test_schema.rb +142 -0
- data/test/xml/test_syntax_error.rb +30 -0
- data/test/xml/test_text.rb +49 -2
- data/test/xml/test_unparented_node.rb +440 -0
- data/test/xml/test_xinclude.rb +83 -0
- data/test/xml/test_xpath.rb +445 -0
- data/test/xslt/test_custom_functions.rb +133 -0
- data/test/xslt/test_exception_handling.rb +37 -0
- data/test_all +107 -0
- metadata +459 -115
- data/History.txt +0 -6
- data/README.ja.txt +0 -86
- data/README.txt +0 -87
- data/ext/nokogiri/html_sax_parser.c +0 -32
- data/ext/nokogiri/html_sax_parser.h +0 -11
- data/ext/nokogiri/native.c +0 -40
- data/ext/nokogiri/native.h +0 -51
- data/ext/nokogiri/xml_xpath.c +0 -46
- data/ext/nokogiri/xml_xpath.h +0 -11
- data/lib/nokogiri/css/generated_parser.rb +0 -653
- data/lib/nokogiri/css/generated_tokenizer.rb +0 -159
- data/lib/nokogiri/decorators/hpricot/node.rb +0 -58
- data/lib/nokogiri/decorators/hpricot/node_set.rb +0 -14
- data/lib/nokogiri/decorators/hpricot/xpath_visitor.rb +0 -17
- data/lib/nokogiri/decorators/hpricot.rb +0 -3
- data/lib/nokogiri/decorators.rb +0 -1
- data/lib/nokogiri/hpricot.rb +0 -47
- data/lib/nokogiri/xml/after_handler.rb +0 -18
- data/lib/nokogiri/xml/before_handler.rb +0 -32
- data/lib/nokogiri/xml/element.rb +0 -6
- data/lib/nokogiri/xml/entity_declaration.rb +0 -9
- data/nokogiri.gemspec +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 -7
- data/test/hpricot/test_alter.rb +0 -67
- data/test/hpricot/test_builder.rb +0 -27
- data/test/hpricot/test_parser.rb +0 -423
- data/test/hpricot/test_paths.rb +0 -15
- data/test/hpricot/test_preserved.rb +0 -78
- data/test/hpricot/test_xml.rb +0 -30
- data/test/test_reader.rb +0 -222
data/README.ja.txt
DELETED
@@ -1,86 +0,0 @@
|
|
1
|
-
= Nokogiri (鋸)
|
2
|
-
|
3
|
-
* http://nokogiri.rubyforge.org/
|
4
|
-
* http://github.com/tenderlove/nokogiri/wikis
|
5
|
-
* http://github.com/tenderlove/nokogiri/tree/master
|
6
|
-
|
7
|
-
== DESCRIPTION:
|
8
|
-
|
9
|
-
Nokogiri はHTMLやXMLやSAXやXSLTやReaderのパーサーです。
|
10
|
-
|
11
|
-
== FEATURES:
|
12
|
-
|
13
|
-
* XPath で探せる
|
14
|
-
* CSS3 のセレクターで探せる
|
15
|
-
* XML/HTMLのビルダーはある
|
16
|
-
|
17
|
-
NokogiriはHpricotより早くパーサーし、検索出来たり、
|
18
|
-
正確にCSS3とXPathをサポート出来たりする。
|
19
|
-
|
20
|
-
* http://gist.github.com/18533
|
21
|
-
|
22
|
-
NokogiriはHpricotの代わりに使用出来る。
|
23
|
-
その互換性は簡単に正しいCSSとXPathを使用する事が出来る。
|
24
|
-
|
25
|
-
== SYNOPSIS:
|
26
|
-
|
27
|
-
require 'nokogiri'
|
28
|
-
require 'open-uri'
|
29
|
-
|
30
|
-
doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))
|
31
|
-
|
32
|
-
####
|
33
|
-
# Search for nodes by css
|
34
|
-
doc.css('h3.r a.l').each do |link|
|
35
|
-
puts link.content
|
36
|
-
end
|
37
|
-
|
38
|
-
####
|
39
|
-
# Search for nodes by xpath
|
40
|
-
doc.xpath('//h3/a[@class="l"]').each do |link|
|
41
|
-
puts link.content
|
42
|
-
end
|
43
|
-
|
44
|
-
####
|
45
|
-
# Or mix and match.
|
46
|
-
doc.search('h3.r a.l', '//h3/a[@class="l"]').each do |link|
|
47
|
-
puts link.content
|
48
|
-
end
|
49
|
-
|
50
|
-
|
51
|
-
== REQUIREMENTS:
|
52
|
-
|
53
|
-
* ruby 1.8 or 1.9
|
54
|
-
* libxml
|
55
|
-
|
56
|
-
== INSTALL:
|
57
|
-
|
58
|
-
* sudo gem install nokogiri
|
59
|
-
|
60
|
-
== LICENSE:
|
61
|
-
|
62
|
-
(The MIT License)
|
63
|
-
|
64
|
-
Copyright (c) 2008:
|
65
|
-
|
66
|
-
* {Aaron Patterson}[http://tenderlovemaking.com]
|
67
|
-
* {Mike Dalessio}[http://mike.daless.io]
|
68
|
-
|
69
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
70
|
-
a copy of this software and associated documentation files (the
|
71
|
-
'Software'), to deal in the Software without restriction, including
|
72
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
73
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
74
|
-
permit persons to whom the Software is furnished to do so, subject to
|
75
|
-
the following conditions:
|
76
|
-
|
77
|
-
The above copyright notice and this permission notice shall be
|
78
|
-
included in all copies or substantial portions of the Software.
|
79
|
-
|
80
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
81
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
82
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
83
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
84
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
85
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
86
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.txt
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
= Nokogiri
|
2
|
-
|
3
|
-
* http://nokogiri.rubyforge.org/
|
4
|
-
* http://github.com/tenderlove/nokogiri/wikis
|
5
|
-
* http://github.com/tenderlove/nokogiri/tree/master
|
6
|
-
|
7
|
-
== DESCRIPTION:
|
8
|
-
|
9
|
-
Nokogiri (鋸) is an HTML, XML, SAX, and Reader parser.
|
10
|
-
|
11
|
-
== FEATURES:
|
12
|
-
|
13
|
-
* XPath support for document searching
|
14
|
-
* CSS3 selector support for document searching
|
15
|
-
* XML/HTML builder
|
16
|
-
* Drop in replacement for Hpricot
|
17
|
-
|
18
|
-
Nokogiri parses and searches XML/HTML faster than Hpricot, and also has
|
19
|
-
correctly implemented CSS3 selector support as well as XPath support.
|
20
|
-
|
21
|
-
* http://gist.github.com/18533
|
22
|
-
|
23
|
-
Nokogiri also features an Hpricot compatibility layer to help ease the change
|
24
|
-
to using correct CSS and XPath.
|
25
|
-
|
26
|
-
== SYNOPSIS:
|
27
|
-
|
28
|
-
require 'nokogiri'
|
29
|
-
require 'open-uri'
|
30
|
-
|
31
|
-
doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))
|
32
|
-
|
33
|
-
####
|
34
|
-
# Search for nodes by css
|
35
|
-
doc.css('h3.r a.l').each do |link|
|
36
|
-
puts link.content
|
37
|
-
end
|
38
|
-
|
39
|
-
####
|
40
|
-
# Search for nodes by xpath
|
41
|
-
doc.xpath('//h3/a[@class="l"]').each do |link|
|
42
|
-
puts link.content
|
43
|
-
end
|
44
|
-
|
45
|
-
####
|
46
|
-
# Or mix and match.
|
47
|
-
doc.search('h3.r a.l', '//h3/a[@class="l"]').each do |link|
|
48
|
-
puts link.content
|
49
|
-
end
|
50
|
-
|
51
|
-
|
52
|
-
== REQUIREMENTS:
|
53
|
-
|
54
|
-
* ruby 1.8 or 1.9
|
55
|
-
* libxml
|
56
|
-
|
57
|
-
== INSTALL:
|
58
|
-
|
59
|
-
* sudo gem install nokogiri
|
60
|
-
|
61
|
-
== LICENSE:
|
62
|
-
|
63
|
-
(The MIT License)
|
64
|
-
|
65
|
-
Copyright (c) 2008:
|
66
|
-
|
67
|
-
* {Aaron Patterson}[http://tenderlovemaking.com]
|
68
|
-
* {Mike Dalessio}[http://mike.daless.io]
|
69
|
-
|
70
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
71
|
-
a copy of this software and associated documentation files (the
|
72
|
-
'Software'), to deal in the Software without restriction, including
|
73
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
74
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
75
|
-
permit persons to whom the Software is furnished to do so, subject to
|
76
|
-
the following conditions:
|
77
|
-
|
78
|
-
The above copyright notice and this permission notice shall be
|
79
|
-
included in all copies or substantial portions of the Software.
|
80
|
-
|
81
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
82
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
83
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
84
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
85
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
86
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
87
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,32 +0,0 @@
|
|
1
|
-
#include <html_sax_parser.h>
|
2
|
-
|
3
|
-
static VALUE native_parse_file(VALUE self, VALUE data, VALUE encoding)
|
4
|
-
{
|
5
|
-
xmlSAXHandlerPtr handler;
|
6
|
-
Data_Get_Struct(self, xmlSAXHandler, handler);
|
7
|
-
htmlSAXParseFile( StringValuePtr(data),
|
8
|
-
(const char *)StringValuePtr(encoding),
|
9
|
-
(htmlSAXHandlerPtr)handler,
|
10
|
-
(void *)self );
|
11
|
-
return data;
|
12
|
-
}
|
13
|
-
|
14
|
-
static VALUE native_parse_memory(VALUE self, VALUE data, VALUE encoding)
|
15
|
-
{
|
16
|
-
xmlSAXHandlerPtr handler;
|
17
|
-
Data_Get_Struct(self, xmlSAXHandler, handler);
|
18
|
-
htmlSAXParseDoc( (xmlChar *)StringValuePtr(data),
|
19
|
-
(const char *)StringValuePtr(encoding),
|
20
|
-
(htmlSAXHandlerPtr)handler,
|
21
|
-
(void *)self );
|
22
|
-
return data;
|
23
|
-
}
|
24
|
-
|
25
|
-
VALUE cNokogiriHtmlSaxParser ;
|
26
|
-
void init_html_sax_parser()
|
27
|
-
{
|
28
|
-
VALUE klass = cNokogiriHtmlSaxParser =
|
29
|
-
rb_const_get(mNokogiriHtmlSax, rb_intern("Parser"));
|
30
|
-
rb_define_private_method(klass, "native_parse_memory", native_parse_memory, 2);
|
31
|
-
rb_define_private_method(klass, "native_parse_file", native_parse_file, 2);
|
32
|
-
}
|
data/ext/nokogiri/native.c
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
#include <native.h>
|
2
|
-
|
3
|
-
VALUE mNokogiri ;
|
4
|
-
VALUE mNokogiriXml ;
|
5
|
-
VALUE mNokogiriHtml ;
|
6
|
-
VALUE mNokogiriXslt ;
|
7
|
-
VALUE mNokogiriXmlSax ;
|
8
|
-
VALUE mNokogiriHtmlSax ;
|
9
|
-
|
10
|
-
void Init_native()
|
11
|
-
{
|
12
|
-
mNokogiri = rb_const_get(rb_cObject, rb_intern("Nokogiri"));
|
13
|
-
mNokogiriXml = rb_const_get(mNokogiri, rb_intern("XML"));
|
14
|
-
mNokogiriHtml = rb_const_get(mNokogiri, rb_intern("HTML"));
|
15
|
-
mNokogiriXslt = rb_const_get(mNokogiri, rb_intern("XSLT"));
|
16
|
-
mNokogiriXmlSax = rb_const_get(mNokogiriXml, rb_intern("SAX"));
|
17
|
-
mNokogiriHtmlSax = rb_const_get(mNokogiriHtml, rb_intern("SAX"));
|
18
|
-
|
19
|
-
rb_const_set( mNokogiri,
|
20
|
-
rb_intern("LIBXML_VERSION"),
|
21
|
-
rb_str_new2(LIBXML_DOTTED_VERSION)
|
22
|
-
);
|
23
|
-
|
24
|
-
xmlSetStructuredErrorFunc(NULL, Nokogiri_error_handler);
|
25
|
-
|
26
|
-
init_xml_document();
|
27
|
-
init_html_document();
|
28
|
-
init_xml_node();
|
29
|
-
init_xml_text();
|
30
|
-
init_xml_cdata();
|
31
|
-
init_xml_node_set();
|
32
|
-
init_xml_xpath_context();
|
33
|
-
init_xml_xpath();
|
34
|
-
init_xml_sax_parser();
|
35
|
-
init_xml_reader();
|
36
|
-
init_xml_dtd();
|
37
|
-
init_html_sax_parser();
|
38
|
-
init_xslt_stylesheet();
|
39
|
-
init_xml_syntax_error();
|
40
|
-
}
|
data/ext/nokogiri/native.h
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
#ifndef NOKOGIRI_NATIVE
|
2
|
-
#define NOKOGIRI_NATIVE
|
3
|
-
|
4
|
-
#include <stdlib.h>
|
5
|
-
#include <ruby.h>
|
6
|
-
#include <libxml/parser.h>
|
7
|
-
#include <libxml/xpath.h>
|
8
|
-
#include <libxml/xpathInternals.h>
|
9
|
-
#include <libxml/xmlreader.h>
|
10
|
-
#include <libxml/HTMLparser.h>
|
11
|
-
#include <libxml/HTMLtree.h>
|
12
|
-
|
13
|
-
#include <xml_document.h>
|
14
|
-
#include <html_document.h>
|
15
|
-
#include <xml_node.h>
|
16
|
-
#include <xml_text.h>
|
17
|
-
#include <xml_cdata.h>
|
18
|
-
#include <xml_node_set.h>
|
19
|
-
#include <xml_xpath.h>
|
20
|
-
#include <xml_dtd.h>
|
21
|
-
#include <xml_xpath_context.h>
|
22
|
-
#include <xml_sax_parser.h>
|
23
|
-
#include <xml_reader.h>
|
24
|
-
#include <html_sax_parser.h>
|
25
|
-
#include <xslt_stylesheet.h>
|
26
|
-
#include <xml_syntax_error.h>
|
27
|
-
|
28
|
-
extern VALUE mNokogiri ;
|
29
|
-
extern VALUE mNokogiriXml ;
|
30
|
-
extern VALUE mNokogiriXmlSax ;
|
31
|
-
extern VALUE mNokogiriHtml ;
|
32
|
-
extern VALUE mNokogiriHtmlSax ;
|
33
|
-
extern VALUE mNokogiriXslt ;
|
34
|
-
|
35
|
-
#ifdef DEBUG
|
36
|
-
|
37
|
-
#define NOKOGIRI_DEBUG_START_NODE(p) if (getenv("NOKOGIRI_DEBUG")) fprintf(stderr,"\nnokogiri: %s:%d %p start node (%p %x %p/%s)\n", __FILE__, __LINE__, p, p->_private, p->type, p->name, p->name);
|
38
|
-
#define NOKOGIRI_DEBUG_START_TEXT(p) if (getenv("NOKOGIRI_DEBUG")) fprintf(stderr,"\nnokogiri: %s:%d %p start node (%p %x %p/%s) '%s'\n", __FILE__, __LINE__, p, p->_private, p->type, p->name, p->name, p->content);
|
39
|
-
#define NOKOGIRI_DEBUG_START(p) if (getenv("NOKOGIRI_DEBUG")) fprintf(stderr,"nokogiri: %s:%d %p start\n", __FILE__, __LINE__, p);
|
40
|
-
#define NOKOGIRI_DEBUG_END(p) if (getenv("NOKOGIRI_DEBUG")) fprintf(stderr,"nokogiri: %s:%d %p end\n", __FILE__, __LINE__, p);
|
41
|
-
|
42
|
-
#else
|
43
|
-
|
44
|
-
#define NOKOGIRI_DEBUG_START_NODE(p)
|
45
|
-
#define NOKOGIRI_DEBUG_START_TEXT(p)
|
46
|
-
#define NOKOGIRI_DEBUG_START(p)
|
47
|
-
#define NOKOGIRI_DEBUG_END(p)
|
48
|
-
|
49
|
-
#endif
|
50
|
-
|
51
|
-
#endif
|
data/ext/nokogiri/xml_xpath.c
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
#include <xml_xpath.h>
|
2
|
-
|
3
|
-
static void deallocate(xmlXPathObjectPtr xpath)
|
4
|
-
{
|
5
|
-
NOKOGIRI_DEBUG_START(xpath);
|
6
|
-
xmlXPathFreeNodeSetList(xpath); // despite the name, this frees the xpath but not the contained node set
|
7
|
-
NOKOGIRI_DEBUG_END(xpath);
|
8
|
-
}
|
9
|
-
|
10
|
-
VALUE Nokogiri_wrap_xml_xpath(xmlXPathObjectPtr xpath)
|
11
|
-
{
|
12
|
-
return Data_Wrap_Struct(cNokogiriXmlXpath, 0, deallocate, xpath);
|
13
|
-
}
|
14
|
-
|
15
|
-
/*
|
16
|
-
* call-seq:
|
17
|
-
* node_set
|
18
|
-
*
|
19
|
-
* Fetch the node set associated with this xpath context.
|
20
|
-
*/
|
21
|
-
static VALUE node_set(VALUE self)
|
22
|
-
{
|
23
|
-
xmlXPathObjectPtr xpath;
|
24
|
-
Data_Get_Struct(self, xmlXPathObject, xpath);
|
25
|
-
|
26
|
-
if (xpath->nodesetval)
|
27
|
-
return Nokogiri_wrap_xml_node_set(xpath->nodesetval);
|
28
|
-
|
29
|
-
return Nokogiri_wrap_xml_node_set(xmlXPathNodeSetCreate(NULL));
|
30
|
-
}
|
31
|
-
|
32
|
-
VALUE cNokogiriXmlXpath;
|
33
|
-
void init_xml_xpath(void)
|
34
|
-
{
|
35
|
-
VALUE module = rb_define_module("Nokogiri");
|
36
|
-
VALUE xml = rb_define_module_under(module, "XML");
|
37
|
-
|
38
|
-
/*
|
39
|
-
* This class wraps an XPath object and should only be instantiated from
|
40
|
-
* XPathContext.
|
41
|
-
*/
|
42
|
-
VALUE klass = rb_define_class_under(xml, "XPath", rb_cObject);
|
43
|
-
|
44
|
-
cNokogiriXmlXpath = klass;
|
45
|
-
rb_define_method(klass, "node_set", node_set, 0);
|
46
|
-
}
|