nokogiri 1.6.2.rc1-x64-mingw32
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/.editorconfig +17 -0
- data/.gemtest +0 -0
- data/.travis.yml +25 -0
- data/CHANGELOG.ja.rdoc +857 -0
- data/CHANGELOG.rdoc +880 -0
- data/C_CODING_STYLE.rdoc +33 -0
- data/Gemfile +21 -0
- data/Manifest.txt +371 -0
- data/README.ja.rdoc +112 -0
- data/README.rdoc +180 -0
- data/ROADMAP.md +89 -0
- data/Rakefile +351 -0
- data/STANDARD_RESPONSES.md +47 -0
- data/Y_U_NO_GEMSPEC.md +155 -0
- data/bin/nokogiri +78 -0
- data/build_all +130 -0
- data/dependencies.yml +4 -0
- data/ext/nokogiri/depend +358 -0
- data/ext/nokogiri/extconf.rb +453 -0
- data/ext/nokogiri/html_document.c +170 -0
- data/ext/nokogiri/html_document.h +10 -0
- 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 +148 -0
- data/ext/nokogiri/nokogiri.h +164 -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 +56 -0
- data/ext/nokogiri/xml_cdata.h +9 -0
- data/ext/nokogiri/xml_comment.c +54 -0
- data/ext/nokogiri/xml_comment.h +9 -0
- data/ext/nokogiri/xml_document.c +577 -0
- data/ext/nokogiri/xml_document.h +23 -0
- data/ext/nokogiri/xml_document_fragment.c +48 -0
- data/ext/nokogiri/xml_document_fragment.h +10 -0
- data/ext/nokogiri/xml_dtd.c +202 -0
- data/ext/nokogiri/xml_dtd.h +10 -0
- 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 +56 -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 +78 -0
- data/ext/nokogiri/xml_namespace.h +13 -0
- data/ext/nokogiri/xml_node.c +1541 -0
- data/ext/nokogiri/xml_node.h +13 -0
- data/ext/nokogiri/xml_node_set.c +467 -0
- data/ext/nokogiri/xml_node_set.h +14 -0
- data/ext/nokogiri/xml_processing_instruction.c +56 -0
- data/ext/nokogiri/xml_processing_instruction.h +9 -0
- data/ext/nokogiri/xml_reader.c +681 -0
- data/ext/nokogiri/xml_reader.h +10 -0
- 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 +312 -0
- data/ext/nokogiri/xml_sax_parser.h +39 -0
- 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 +63 -0
- data/ext/nokogiri/xml_syntax_error.h +13 -0
- data/ext/nokogiri/xml_text.c +52 -0
- data/ext/nokogiri/xml_text.h +9 -0
- data/ext/nokogiri/xml_xpath_context.c +307 -0
- data/ext/nokogiri/xml_xpath_context.h +10 -0
- data/ext/nokogiri/xslt_stylesheet.c +270 -0
- data/ext/nokogiri/xslt_stylesheet.h +14 -0
- data/lib/nokogiri.rb +137 -0
- data/lib/nokogiri/2.0/nokogiri.so +0 -0
- data/lib/nokogiri/2.1/nokogiri.so +0 -0
- data/lib/nokogiri/css.rb +27 -0
- data/lib/nokogiri/css/node.rb +52 -0
- data/lib/nokogiri/css/parser.rb +715 -0
- data/lib/nokogiri/css/parser.y +249 -0
- data/lib/nokogiri/css/parser_extras.rb +91 -0
- data/lib/nokogiri/css/syntax_error.rb +7 -0
- data/lib/nokogiri/css/tokenizer.rb +152 -0
- data/lib/nokogiri/css/tokenizer.rex +55 -0
- data/lib/nokogiri/css/xpath_visitor.rb +219 -0
- data/lib/nokogiri/decorators/slop.rb +35 -0
- data/lib/nokogiri/html.rb +37 -0
- data/lib/nokogiri/html/builder.rb +35 -0
- data/lib/nokogiri/html/document.rb +333 -0
- data/lib/nokogiri/html/document_fragment.rb +41 -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 +52 -0
- data/lib/nokogiri/html/sax/parser_context.rb +16 -0
- data/lib/nokogiri/html/sax/push_parser.rb +16 -0
- data/lib/nokogiri/syntax_error.rb +4 -0
- data/lib/nokogiri/version.rb +106 -0
- data/lib/nokogiri/xml.rb +73 -0
- data/lib/nokogiri/xml/attr.rb +14 -0
- data/lib/nokogiri/xml/attribute_decl.rb +18 -0
- data/lib/nokogiri/xml/builder.rb +443 -0
- data/lib/nokogiri/xml/cdata.rb +11 -0
- data/lib/nokogiri/xml/character_data.rb +7 -0
- data/lib/nokogiri/xml/document.rb +279 -0
- data/lib/nokogiri/xml/document_fragment.rb +112 -0
- data/lib/nokogiri/xml/dtd.rb +32 -0
- 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 +982 -0
- data/lib/nokogiri/xml/node/save_options.rb +61 -0
- data/lib/nokogiri/xml/node_set.rb +355 -0
- data/lib/nokogiri/xml/notation.rb +6 -0
- data/lib/nokogiri/xml/parse_options.rb +98 -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 +8 -0
- data/lib/nokogiri/xml/reader.rb +112 -0
- data/lib/nokogiri/xml/relax_ng.rb +32 -0
- data/lib/nokogiri/xml/sax.rb +4 -0
- data/lib/nokogiri/xml/sax/document.rb +171 -0
- data/lib/nokogiri/xml/sax/parser.rb +123 -0
- data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
- data/lib/nokogiri/xml/sax/push_parser.rb +60 -0
- data/lib/nokogiri/xml/schema.rb +63 -0
- data/lib/nokogiri/xml/syntax_error.rb +47 -0
- data/lib/nokogiri/xml/text.rb +9 -0
- data/lib/nokogiri/xml/xpath.rb +10 -0
- data/lib/nokogiri/xml/xpath/syntax_error.rb +11 -0
- data/lib/nokogiri/xml/xpath_context.rb +16 -0
- data/lib/nokogiri/xslt.rb +56 -0
- data/lib/nokogiri/xslt/stylesheet.rb +25 -0
- data/lib/xsd/xmlparser/nokogiri.rb +102 -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/nokogiri.org.rb +24 -0
- data/tasks/test.rb +95 -0
- data/test/css/test_nthiness.rb +222 -0
- data/test/css/test_parser.rb +358 -0
- data/test/css/test_tokenizer.rb +198 -0
- data/test/css/test_xpath_visitor.rb +96 -0
- data/test/decorators/test_slop.rb +16 -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/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/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/snuggles.xml +3 -0
- data/test/files/staff.dtd +10 -0
- data/test/files/staff.xml +59 -0
- data/test/files/staff.xslt +32 -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 +850 -0
- 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 +164 -0
- data/test/html/sax/test_parser.rb +141 -0
- data/test/html/sax/test_parser_context.rb +46 -0
- data/test/html/test_builder.rb +164 -0
- data/test/html/test_document.rb +619 -0
- data/test/html/test_document_encoding.rb +148 -0
- data/test/html/test_document_fragment.rb +261 -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 +196 -0
- data/test/html/test_node_encoding.rb +27 -0
- data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +14 -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 +66 -0
- data/test/test_convert_xpath.rb +135 -0
- data/test/test_css_cache.rb +45 -0
- data/test/test_encoding_handler.rb +46 -0
- data/test/test_memory_leak.rb +156 -0
- data/test/test_nokogiri.rb +138 -0
- data/test/test_reader.rb +558 -0
- data/test/test_soap4r_sax.rb +52 -0
- data/test/test_xslt_transforms.rb +279 -0
- 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 +382 -0
- 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 +64 -0
- data/test/xml/test_attribute_decl.rb +86 -0
- data/test/xml/test_builder.rb +315 -0
- data/test/xml/test_c14n.rb +161 -0
- data/test/xml/test_cdata.rb +48 -0
- data/test/xml/test_comment.rb +29 -0
- data/test/xml/test_document.rb +934 -0
- data/test/xml/test_document_encoding.rb +28 -0
- data/test/xml/test_document_fragment.rb +228 -0
- data/test/xml/test_dtd.rb +187 -0
- data/test/xml/test_dtd_encoding.rb +33 -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 +245 -0
- data/test/xml/test_namespace.rb +95 -0
- data/test/xml/test_node.rb +1155 -0
- data/test/xml/test_node_attributes.rb +113 -0
- data/test/xml/test_node_encoding.rb +107 -0
- data/test/xml/test_node_inheritance.rb +32 -0
- data/test/xml/test_node_reparenting.rb +374 -0
- data/test/xml/test_node_set.rb +755 -0
- data/test/xml/test_parse_options.rb +64 -0
- data/test/xml/test_processing_instruction.rb +30 -0
- data/test/xml/test_reader_encoding.rb +142 -0
- data/test/xml/test_relax_ng.rb +60 -0
- data/test/xml/test_schema.rb +129 -0
- data/test/xml/test_syntax_error.rb +12 -0
- data/test/xml/test_text.rb +45 -0
- data/test/xml/test_unparented_node.rb +422 -0
- data/test/xml/test_xinclude.rb +83 -0
- data/test/xml/test_xpath.rb +376 -0
- data/test/xslt/test_custom_functions.rb +133 -0
- data/test/xslt/test_exception_handling.rb +37 -0
- data/test_all +81 -0
- metadata +601 -0
@@ -0,0 +1,198 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require "helper"
|
4
|
+
|
5
|
+
module Nokogiri
|
6
|
+
module CSS
|
7
|
+
class Tokenizer
|
8
|
+
alias :scan :scan_setup
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module Nokogiri
|
14
|
+
module CSS
|
15
|
+
class TestTokenizer < Nokogiri::TestCase
|
16
|
+
def setup
|
17
|
+
super
|
18
|
+
@scanner = Nokogiri::CSS::Tokenizer.new
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_has
|
22
|
+
@scanner.scan("a:has(b)")
|
23
|
+
assert_tokens(
|
24
|
+
[[:IDENT, "a"], [":", ":"], [:HAS, "has("], [:IDENT, "b"], [:RPAREN, ")"]],
|
25
|
+
@scanner)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_unicode
|
29
|
+
@scanner.scan("a日本語")
|
30
|
+
assert_tokens([[:IDENT, 'a日本語']], @scanner)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_tokenize_bad_single_quote
|
34
|
+
@scanner.scan("'")
|
35
|
+
assert_tokens([["'", "'"]], @scanner)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_not_equal
|
39
|
+
@scanner.scan("h1[a!='Tender Lovemaking']")
|
40
|
+
assert_tokens([ [:IDENT, 'h1'],
|
41
|
+
[:LSQUARE, '['],
|
42
|
+
[:IDENT, 'a'],
|
43
|
+
[:NOT_EQUAL, '!='],
|
44
|
+
[:STRING, "'Tender Lovemaking'"],
|
45
|
+
[:RSQUARE, ']'],
|
46
|
+
], @scanner)
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_negation
|
50
|
+
@scanner.scan("p:not(.a)")
|
51
|
+
assert_tokens([ [:IDENT, 'p'],
|
52
|
+
[:NOT, ':not('],
|
53
|
+
['.', '.'],
|
54
|
+
[:IDENT, 'a'],
|
55
|
+
[:RPAREN, ')'],
|
56
|
+
], @scanner)
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_function
|
60
|
+
@scanner.scan("script comment()")
|
61
|
+
assert_tokens([ [:IDENT, 'script'],
|
62
|
+
[:S, ' '],
|
63
|
+
[:FUNCTION, 'comment('],
|
64
|
+
[:RPAREN, ')'],
|
65
|
+
], @scanner)
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_preceding_selector
|
69
|
+
@scanner.scan("E ~ F")
|
70
|
+
assert_tokens([ [:IDENT, 'E'],
|
71
|
+
[:TILDE, ' ~ '],
|
72
|
+
[:IDENT, 'F'],
|
73
|
+
], @scanner)
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_scan_attribute_string
|
77
|
+
@scanner.scan("h1[a='Tender Lovemaking']")
|
78
|
+
assert_tokens([ [:IDENT, 'h1'],
|
79
|
+
[:LSQUARE, '['],
|
80
|
+
[:IDENT, 'a'],
|
81
|
+
[:EQUAL, '='],
|
82
|
+
[:STRING, "'Tender Lovemaking'"],
|
83
|
+
[:RSQUARE, ']'],
|
84
|
+
], @scanner)
|
85
|
+
@scanner.scan('h1[a="Tender Lovemaking"]')
|
86
|
+
assert_tokens([ [:IDENT, 'h1'],
|
87
|
+
[:LSQUARE, '['],
|
88
|
+
[:IDENT, 'a'],
|
89
|
+
[:EQUAL, '='],
|
90
|
+
[:STRING, '"Tender Lovemaking"'],
|
91
|
+
[:RSQUARE, ']'],
|
92
|
+
], @scanner)
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_scan_id
|
96
|
+
@scanner.scan('#foo')
|
97
|
+
assert_tokens([ [:HASH, '#foo'] ], @scanner)
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_scan_pseudo
|
101
|
+
@scanner.scan('a:visited')
|
102
|
+
assert_tokens([ [:IDENT, 'a'],
|
103
|
+
[':', ':'],
|
104
|
+
[:IDENT, 'visited']
|
105
|
+
], @scanner)
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_scan_star
|
109
|
+
@scanner.scan('*')
|
110
|
+
assert_tokens([ ['*', '*'], ], @scanner)
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_scan_class
|
114
|
+
@scanner.scan('x.awesome')
|
115
|
+
assert_tokens([ [:IDENT, 'x'],
|
116
|
+
['.', '.'],
|
117
|
+
[:IDENT, 'awesome'],
|
118
|
+
], @scanner)
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_scan_greater
|
122
|
+
@scanner.scan('x > y')
|
123
|
+
assert_tokens([ [:IDENT, 'x'],
|
124
|
+
[:GREATER, ' > '],
|
125
|
+
[:IDENT, 'y']
|
126
|
+
], @scanner)
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_scan_slash
|
130
|
+
@scanner.scan('x/y')
|
131
|
+
assert_tokens([ [:IDENT, 'x'],
|
132
|
+
[:SLASH, '/'],
|
133
|
+
[:IDENT, 'y']
|
134
|
+
], @scanner)
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_scan_doubleslash
|
138
|
+
@scanner.scan('x//y')
|
139
|
+
assert_tokens([ [:IDENT, 'x'],
|
140
|
+
[:DOUBLESLASH, '//'],
|
141
|
+
[:IDENT, 'y']
|
142
|
+
], @scanner)
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_scan_function_selector
|
146
|
+
@scanner.scan('x:eq(0)')
|
147
|
+
assert_tokens([ [:IDENT, 'x'],
|
148
|
+
[':', ':'],
|
149
|
+
[:FUNCTION, 'eq('],
|
150
|
+
[:NUMBER, "0"],
|
151
|
+
[:RPAREN, ')'],
|
152
|
+
], @scanner)
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_scan_nth
|
156
|
+
@scanner.scan('x:nth-child(5n+3)')
|
157
|
+
assert_tokens([ [:IDENT, 'x'],
|
158
|
+
[':', ':'],
|
159
|
+
[:FUNCTION, 'nth-child('],
|
160
|
+
[:NUMBER, '5'],
|
161
|
+
[:IDENT, 'n'],
|
162
|
+
[:PLUS, '+'],
|
163
|
+
[:NUMBER, '3'],
|
164
|
+
[:RPAREN, ')'],
|
165
|
+
], @scanner)
|
166
|
+
|
167
|
+
@scanner.scan('x:nth-child(-1n+3)')
|
168
|
+
assert_tokens([ [:IDENT, 'x'],
|
169
|
+
[':', ':'],
|
170
|
+
[:FUNCTION, 'nth-child('],
|
171
|
+
[:NUMBER, '-1'],
|
172
|
+
[:IDENT, 'n'],
|
173
|
+
[:PLUS, '+'],
|
174
|
+
[:NUMBER, '3'],
|
175
|
+
[:RPAREN, ')'],
|
176
|
+
], @scanner)
|
177
|
+
|
178
|
+
@scanner.scan('x:nth-child(-n+3)')
|
179
|
+
assert_tokens([ [:IDENT, 'x'],
|
180
|
+
[':', ':'],
|
181
|
+
[:FUNCTION, 'nth-child('],
|
182
|
+
[:IDENT, '-n'],
|
183
|
+
[:PLUS, '+'],
|
184
|
+
[:NUMBER, '3'],
|
185
|
+
[:RPAREN, ')'],
|
186
|
+
], @scanner)
|
187
|
+
end
|
188
|
+
|
189
|
+
def assert_tokens(tokens, scanner)
|
190
|
+
toks = []
|
191
|
+
while tok = @scanner.next_token
|
192
|
+
toks << tok
|
193
|
+
end
|
194
|
+
assert_equal(tokens, toks)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
module Nokogiri
|
4
|
+
module CSS
|
5
|
+
class TestXPathVisitor < Nokogiri::TestCase
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
@parser = Nokogiri::CSS::Parser.new
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_not_simple_selector
|
12
|
+
assert_xpath('//ol/*[not(self::li)]', @parser.parse('ol > *:not(li)'))
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_not_last_child
|
16
|
+
assert_xpath('//ol/*[not(count(following-sibling::*) = 0)]',
|
17
|
+
@parser.parse('ol > *:not(:last-child)'))
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_not_only_child
|
21
|
+
assert_xpath('//ol/*[not(count(preceding-sibling::*) = 0 and count(following-sibling::*) = 0)]',
|
22
|
+
@parser.parse('ol > *:not(:only-child)'))
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_function_calls_allow_at_params
|
26
|
+
assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)'))
|
27
|
+
assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)'))
|
28
|
+
assert_xpath("//a[foo(., a, 10)]", @parser.parse('a:foo(a, 10)'))
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_namespace_conversion
|
32
|
+
assert_xpath("//aaron:a", @parser.parse('aaron|a'))
|
33
|
+
assert_xpath("//a", @parser.parse('|a'))
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_namespaced_attribute_conversion
|
37
|
+
assert_xpath("//a[@flavorjones:href]", @parser.parse('a[flavorjones|href]'))
|
38
|
+
assert_xpath("//a[@href]", @parser.parse('a[|href]'))
|
39
|
+
assert_xpath("//*[@flavorjones:href]", @parser.parse('*[flavorjones|href]'))
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_unknown_psuedo_classes_get_pushed_down
|
43
|
+
assert_xpath("//a[aaron(.)]", @parser.parse('a:aaron'))
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_unknown_functions_get_dot_plus_args
|
47
|
+
assert_xpath("//a[aaron(.)]", @parser.parse('a:aaron()'))
|
48
|
+
assert_xpath("//a[aaron(., 12)]", @parser.parse('a:aaron(12)'))
|
49
|
+
assert_xpath("//a[aaron(., 12, 1)]", @parser.parse('a:aaron(12, 1)'))
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_class_selectors
|
53
|
+
assert_xpath "//*[contains(concat(' ', normalize-space(@class), ' '), ' red ')]",
|
54
|
+
@parser.parse(".red")
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_pipe
|
58
|
+
assert_xpath "//a[@id = 'Boing' or starts-with(@id, concat('Boing', '-'))]",
|
59
|
+
@parser.parse("a[id|='Boing']")
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_custom_functions
|
63
|
+
visitor = Class.new(XPathVisitor) do
|
64
|
+
attr_accessor :awesome
|
65
|
+
def visit_function_aaron node
|
66
|
+
@awesome = true
|
67
|
+
'aaron() = 1'
|
68
|
+
end
|
69
|
+
end.new
|
70
|
+
ast = @parser.parse('a:aaron()').first
|
71
|
+
assert_equal 'a[aaron() = 1]', visitor.accept(ast)
|
72
|
+
assert visitor.awesome
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_custom_psuedo_classes
|
76
|
+
visitor = Class.new(XPathVisitor) do
|
77
|
+
attr_accessor :awesome
|
78
|
+
def visit_pseudo_class_aaron node
|
79
|
+
@awesome = true
|
80
|
+
'aaron() = 1'
|
81
|
+
end
|
82
|
+
end.new
|
83
|
+
ast = @parser.parse('a:aaron').first
|
84
|
+
assert_equal 'a[aaron() = 1]', visitor.accept(ast)
|
85
|
+
assert visitor.awesome
|
86
|
+
end
|
87
|
+
|
88
|
+
def assert_xpath expecteds, asts
|
89
|
+
expecteds = [expecteds].flatten
|
90
|
+
expecteds.zip(asts).each do |expected, actual|
|
91
|
+
assert_equal expected, actual.to_xpath
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
module Nokogiri
|
4
|
+
class TestSlop < Nokogiri::TestCase
|
5
|
+
def test_description_tag
|
6
|
+
doc = Nokogiri.Slop(<<-eoxml)
|
7
|
+
<item>
|
8
|
+
<title>foo</title>
|
9
|
+
<description>this is the foo thing</description>
|
10
|
+
</item>
|
11
|
+
eoxml
|
12
|
+
assert doc.item.title
|
13
|
+
assert doc.item._description, 'should have description'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/test/files/2ch.html
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
|
5
|
+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
6
|
+
<meta http-equiv="Content-Style-Type" content="text/css" />
|
7
|
+
<meta name="Description" CONTENT="�u�n�b�L���O�v����u���ӂ̂������v�܂ł���L���J�o�[���鋐��f���Q�w�Q�����˂�x�ւ悤�����I">
|
8
|
+
<meta name="KeyWords" CONTENT="�Q�����˂�, �f����, 2ch, BBS">
|
9
|
+
<meta name="Author" CONTENT="�Q�����˂�">
|
10
|
+
<meta name="verify-v1" content="hMevVuWJIPYrUj9ItfRJByoLNIpyhnrWaywiH+IFocU=" />
|
11
|
+
<title>�Q�����˂�f���ւ悤����</title>
|
12
|
+
<style type="text/css" media="all">
|
13
|
+
@import url(2ch_top.css);
|
14
|
+
</style>
|
15
|
+
<script>
|
16
|
+
<!--
|
17
|
+
function fcs(){document.f.STR.focus();}
|
18
|
+
-->
|
19
|
+
</script>
|
20
|
+
</head>
|
21
|
+
|
22
|
+
<body onLoad="document.f.STR.focus()">
|
23
|
+
|
24
|
+
<div id="wrapper">
|
25
|
+
<div id="header">
|
26
|
+
<div id="header_inside">
|
27
|
+
<div class="header_left">
|
28
|
+
<a href="http://www2.2ch.net/2ch.html"><img src="images/2ch_logo.gif" width="151" height="40" alt="�Q�����˂�" align="middle" border="0" /><a href="http://www2.2ch.net/2ch.html">�f����</a>�b
|
29
|
+
<a href="http://c.2ch.net/">imode</a>�b<a href="http://orz.2ch.io/top.html">�g��orz</a>�b<a href="http://p2.2ch.net/">�r���[�Ap2</a>
|
30
|
+
</div>
|
31
|
+
|
32
|
+
<div class="senna_banner">
|
33
|
+
|
34
|
+
<a href="http://razil.jp/product/senna/"><img src="images/senna88x31.gif" width="88" height="31" alt="Senna" align="middle" border="0" /></a>
|
35
|
+
</div>
|
36
|
+
<div class="header_right">
|
37
|
+
<!---find 2ch form --->
|
38
|
+
<form method=GET name=f action="http://find.2ch.net/" style="margin:0px">
|
39
|
+
<input size=25 name=STR value="" class="form_input">
|
40
|
+
<select name="TYPE" class="form_select">
|
41
|
+
<option value="BODY">�{��</option>
|
42
|
+
|
43
|
+
<option value="TITLE" selected>�X���b�h�^�C�g��</option>
|
44
|
+
<option value="POSTERS">���e��</option>
|
45
|
+
</select>
|
46
|
+
<input type="image" src="images/search_button.gif" alt="����" class="form_button"><br />
|
47
|
+
<input type=hidden name=BBS value=ALL>
|
48
|
+
|
49
|
+
<input type=hidden name=ENCODING value=SJIS>
|
50
|
+
<input type=hidden name=COUNT value=50>
|
51
|
+
<div class="caption">�{�������⌟���ݒ��<a href="http://find.2ch.net/moritapo/notlogin.php">���O�C��</a><a href="http://find.2ch.net/moritapo/welcome/">»�ڍ�</a></div>
|
52
|
+
|
53
|
+
</form>
|
54
|
+
</div>
|
55
|
+
</div><!--- header_inside --->
|
56
|
+
</div><!--- end of header--->
|
57
|
+
|
58
|
+
<div id="under_header">
|
59
|
+
<a href="http://newsnavi.2ch.net/">�j���[�X</a>�b<a href="http://headline.2ch.net/bbynews/">�w�b�h���C��</a>�b<a href="http://epg.2ch.net/">�e���r��</a>�b<a href="http://www.2ch.net/kakolog.html">�ߋ����O�q��</a>
|
60
|
+
|
61
|
+
</div><!--- end of under header--->
|
62
|
+
|
63
|
+
<div id="main">
|
64
|
+
<iframe src="http://cast.texpo.jp/2chtop/main_frame.html" width="100%" height="550" scrolling="no" border="0" frameborder="0"></iframe>
|
65
|
+
</div><!--- end of main--->
|
66
|
+
|
67
|
+
<div id="footer_menu">
|
68
|
+
<div class="guide">
|
69
|
+
<a href="http://info.2ch.net/guide/">�g����������</a>�b<a href="http://info.2ch.net/guide/adv.html#saku_guide">�폜�K�C�h���C��</a>�b<a href="http://www2.2ch.net/2ch2.html">�g���Ń��j���[</a>�b<a href="http://info.2ch.net/blog.html">�Ђ�䂫���L</a>�b<a href="http://www.2ch.net/ad.html">�L���̂��ē�</a>
|
70
|
+
|
71
|
+
</div>
|
72
|
+
|
73
|
+
<div class="service">
|
74
|
+
<iframe src="http://cast.texpo.jp/2chtop/moritapo_frame.html" width="100%" height="50" scrolling="no" border="0" frameborder="0"></iframe>
|
75
|
+
</div>
|
76
|
+
|
77
|
+
<div class="banner">
|
78
|
+
<a href=http://livede55.com/ target="_blank"><img
|
79
|
+
src="http://www2.livede55.com/2ch_468_60_13.gif"
|
80
|
+
width="468" height="60" border="0" alt=���C�u�`���b�g></a><br>
|
81
|
+
<br>
|
82
|
+
<A href="http://www.bb-chat.tv/" target=_blank><IMG height=60 src="http://img.bbchat.tv/images/bannar/46860-3.gif" width=468 border=0></A><br>
|
83
|
+
</div>
|
84
|
+
|
85
|
+
<div class="condition">
|
86
|
+
�Q�����˂�̂����p�͗��p�Ҋe�ʂ̂����f�ɂ��C�����Ă��܂��b<a href="precautions.html">2ch�̃f�[�^���p�ɂ���</a>
|
87
|
+
|
88
|
+
</div>
|
89
|
+
</div><!--- end of footer_menu--->
|
90
|
+
|
91
|
+
|
92
|
+
<div id="footer">
|
93
|
+
<div class="footer_left">
|
94
|
+
<a href="http://www.bunka.go.jp/jiyuriyo/" target="_blank">
|
95
|
+
<img src="http://www.dd.iij4u.or.jp/~cap/y_3copyok.jpg" width="184" height="31" border="0" alt="���R���p�}�[�N" /></a>
|
96
|
+
</div>
|
97
|
+
|
98
|
+
<div class="footer_right">
|
99
|
+
<a href="http://count.2ch.net/?index" target="_blank">
|
100
|
+
<img src="http://count.2ch.net/ct.php/index" width="88" height="31" border="0" alt="���������J�E���^�["></a>
|
101
|
+
|
102
|
+
|
103
|
+
</div>
|
104
|
+
</div><!---end of footer--->
|
105
|
+
|
106
|
+
</div><!--- end of wrapper--->
|
107
|
+
</body>
|
108
|
+
</html>
|
data/test/files/atom.xml
ADDED
@@ -0,0 +1,344 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" xml:lang="en-US">
|
3
|
+
<id>tag:github.com,2008:/sparklemotion/nokogiri/commits/master</id>
|
4
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commits/master"/>
|
5
|
+
<link type="application/atom+xml" rel="self" href="https://github.com/sparklemotion/nokogiri/commits/master.atom"/>
|
6
|
+
<title>Recent Commits to nokogiri:master</title>
|
7
|
+
<updated>2013-07-02T08:17:16-07:00</updated>
|
8
|
+
<entry>
|
9
|
+
<id>tag:github.com,2008:Grit::Commit/233489ddfe4698b24dfcdc1daf3ca15bc880e4b1</id>
|
10
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/233489ddfe4698b24dfcdc1daf3ca15bc880e4b1"/>
|
11
|
+
<title>
|
12
|
+
Updated changelog with merged pull requests #887 and #931
|
13
|
+
</title>
|
14
|
+
<updated>2013-07-02T08:17:16-07:00</updated>
|
15
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
16
|
+
<author>
|
17
|
+
<name>injekt</name>
|
18
|
+
<uri>https://github.com/injekt</uri>
|
19
|
+
</author>
|
20
|
+
<content type="html">
|
21
|
+
<pre style='white-space:pre-wrap;width:81ex'>Updated changelog with merged pull requests #887 and #931</pre>
|
22
|
+
</content>
|
23
|
+
</entry>
|
24
|
+
<entry>
|
25
|
+
<id>tag:github.com,2008:Grit::Commit/15eff8be4539a3461cfc1e3c8a257e7eed134e01</id>
|
26
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/15eff8be4539a3461cfc1e3c8a257e7eed134e01"/>
|
27
|
+
<title>
|
28
|
+
Merge pull request #887 from Mange/double-not
|
29
|
+
</title>
|
30
|
+
<updated>2013-07-02T08:13:36-07:00</updated>
|
31
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
32
|
+
<author>
|
33
|
+
<name>injekt</name>
|
34
|
+
<uri>https://github.com/injekt</uri>
|
35
|
+
</author>
|
36
|
+
<content type="html">
|
37
|
+
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #887 from Mange/double-not
|
38
|
+
|
39
|
+
Add support for bare and multiple :not() functions in selectors</pre>
|
40
|
+
</content>
|
41
|
+
</entry>
|
42
|
+
<entry>
|
43
|
+
<id>tag:github.com,2008:Grit::Commit/7a54b1fd1ba1dbcd50d3566bcc62d554eb0fd30e</id>
|
44
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/7a54b1fd1ba1dbcd50d3566bcc62d554eb0fd30e"/>
|
45
|
+
<title>
|
46
|
+
Merge pull request #931 from sorah/dont_call_pkgconfig_when_using_bundled_libraries
|
47
|
+
</title>
|
48
|
+
<updated>2013-07-02T08:11:37-07:00</updated>
|
49
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/74f896b312b786ee75a18073941e2457?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
50
|
+
<author>
|
51
|
+
<name>knu</name>
|
52
|
+
<uri>https://github.com/knu</uri>
|
53
|
+
</author>
|
54
|
+
<content type="html">
|
55
|
+
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #931 from sorah/dont_call_pkgconfig_when_using_bundled_libraries
|
56
|
+
|
57
|
+
extconf.rb: Don't call pkg_config when using bundled libraries</pre>
|
58
|
+
</content>
|
59
|
+
</entry>
|
60
|
+
<entry>
|
61
|
+
<id>tag:github.com,2008:Grit::Commit/e5b93617ba810a34a4fc70dac76a83f9bebd2ea1</id>
|
62
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/e5b93617ba810a34a4fc70dac76a83f9bebd2ea1"/>
|
63
|
+
<title>
|
64
|
+
extconf.rb: Don't call pkg_config when using bundled libraries
|
65
|
+
</title>
|
66
|
+
<updated>2013-07-02T06:30:00-07:00</updated>
|
67
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/c4f076f658dd3464f1d8785ad53a0d99?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
68
|
+
<author>
|
69
|
+
<name>sorah</name>
|
70
|
+
<uri>https://github.com/sorah</uri>
|
71
|
+
</author>
|
72
|
+
<content type="html">
|
73
|
+
<pre style='white-space:pre-wrap;width:81ex'>extconf.rb: Don't call pkg_config when using bundled libraries</pre>
|
74
|
+
</content>
|
75
|
+
</entry>
|
76
|
+
<entry>
|
77
|
+
<id>tag:github.com,2008:Grit::Commit/64cd3c8f506394b558bda9376844a51db971bd60</id>
|
78
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/64cd3c8f506394b558bda9376844a51db971bd60"/>
|
79
|
+
<title>
|
80
|
+
Add support for bare and multiple :not() functions in selectors
|
81
|
+
</title>
|
82
|
+
<updated>2013-06-28T10:19:36-07:00</updated>
|
83
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/1b2792536d87aa21bc739c14980fa103?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
84
|
+
<author>
|
85
|
+
<name>Mange</name>
|
86
|
+
<uri>https://github.com/Mange</uri>
|
87
|
+
</author>
|
88
|
+
<content type="html">
|
89
|
+
<pre style='white-space:pre-wrap;width:81ex'>Add support for bare and multiple :not() functions in selectors
|
90
|
+
|
91
|
+
This enables parsing of ".flash:not(.error):not(.warning)" and
|
92
|
+
":not(p)".
|
93
|
+
|
94
|
+
This entailed a huge change to the parser, but I think the parser should
|
95
|
+
be a bit more robust now by not declaring :not a special case.</pre>
|
96
|
+
</content>
|
97
|
+
</entry>
|
98
|
+
<entry>
|
99
|
+
<id>tag:github.com,2008:Grit::Commit/37828ec784faf29d713225fa78585854912356cd</id>
|
100
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/37828ec784faf29d713225fa78585854912356cd"/>
|
101
|
+
<title>
|
102
|
+
Report error and stop parsing instead of silently ignoring it.
|
103
|
+
</title>
|
104
|
+
<updated>2013-06-27T18:46:12-07:00</updated>
|
105
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/2736d9750eb13425e9bf70f112753c49?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
106
|
+
<author>
|
107
|
+
<name>jvshahid</name>
|
108
|
+
<uri>https://github.com/jvshahid</uri>
|
109
|
+
</author>
|
110
|
+
<content type="html">
|
111
|
+
<pre style='white-space:pre-wrap;width:81ex'>Report error and stop parsing instead of silently ignoring it.</pre>
|
112
|
+
</content>
|
113
|
+
</entry>
|
114
|
+
<entry>
|
115
|
+
<id>tag:github.com,2008:Grit::Commit/42da60e8ca58a5acc9e8c94ae5ad490589f146c6</id>
|
116
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/42da60e8ca58a5acc9e8c94ae5ad490589f146c6"/>
|
117
|
+
<title>
|
118
|
+
Merge pull request #930 from ctborg/master
|
119
|
+
</title>
|
120
|
+
<updated>2013-06-27T04:23:33-07:00</updated>
|
121
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
122
|
+
<author>
|
123
|
+
<name>injekt</name>
|
124
|
+
<uri>https://github.com/injekt</uri>
|
125
|
+
</author>
|
126
|
+
<content type="html">
|
127
|
+
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #930 from ctborg/master
|
128
|
+
|
129
|
+
Adds support for Solaris, OpenSolaris, or illumos.</pre>
|
130
|
+
</content>
|
131
|
+
</entry>
|
132
|
+
<entry>
|
133
|
+
<id>tag:github.com,2008:Grit::Commit/7382a6e6a66d3f80da955ebbcd82250f99321900</id>
|
134
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/7382a6e6a66d3f80da955ebbcd82250f99321900"/>
|
135
|
+
<title>
|
136
|
+
Updated CHANGELOG with latest merged pulls
|
137
|
+
</title>
|
138
|
+
<updated>2013-06-27T04:04:17-07:00</updated>
|
139
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
140
|
+
<author>
|
141
|
+
<name>injekt</name>
|
142
|
+
<uri>https://github.com/injekt</uri>
|
143
|
+
</author>
|
144
|
+
<content type="html">
|
145
|
+
<pre style='white-space:pre-wrap;width:81ex'>Updated CHANGELOG with latest merged pulls</pre>
|
146
|
+
</content>
|
147
|
+
</entry>
|
148
|
+
<entry>
|
149
|
+
<id>tag:github.com,2008:Grit::Commit/3382ebc90e17f2503f4acbbdf53a931d38f3322a</id>
|
150
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/3382ebc90e17f2503f4acbbdf53a931d38f3322a"/>
|
151
|
+
<title>
|
152
|
+
Remove REE also.
|
153
|
+
</title>
|
154
|
+
<updated>2013-06-19T20:57:48-07:00</updated>
|
155
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/74f896b312b786ee75a18073941e2457?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
156
|
+
<author>
|
157
|
+
<name>knu</name>
|
158
|
+
<uri>https://github.com/knu</uri>
|
159
|
+
</author>
|
160
|
+
<content type="html">
|
161
|
+
<pre style='white-space:pre-wrap;width:81ex'>Remove REE also.</pre>
|
162
|
+
</content>
|
163
|
+
</entry>
|
164
|
+
<entry>
|
165
|
+
<id>tag:github.com,2008:Grit::Commit/0c83f4027e295435680cda89a44b5e039e0e6cbb</id>
|
166
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/0c83f4027e295435680cda89a44b5e039e0e6cbb"/>
|
167
|
+
<title>
|
168
|
+
Added support for Solaris, OpenSolaris, or illumos
|
169
|
+
</title>
|
170
|
+
<updated>2013-06-19T07:12:50-07:00</updated>
|
171
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/aff9165c0ea741d027799d5694d0ceb8?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
172
|
+
<author>
|
173
|
+
<name></name>
|
174
|
+
<email>cborg@oanda.com</email>
|
175
|
+
</author>
|
176
|
+
<content type="html">
|
177
|
+
<pre style='white-space:pre-wrap;width:81ex'>Added support for Solaris, OpenSolaris, or illumos</pre>
|
178
|
+
</content>
|
179
|
+
</entry>
|
180
|
+
<entry>
|
181
|
+
<id>tag:github.com,2008:Grit::Commit/fb000c51e3ba4e8730a535d38d617d34111c21ef</id>
|
182
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/fb000c51e3ba4e8730a535d38d617d34111c21ef"/>
|
183
|
+
<title>
|
184
|
+
Ensure meta_encoding checks meta charset tag (closes #919)
|
185
|
+
</title>
|
186
|
+
<updated>2013-06-14T06:06:26-07:00</updated>
|
187
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
188
|
+
<author>
|
189
|
+
<name>injekt</name>
|
190
|
+
<uri>https://github.com/injekt</uri>
|
191
|
+
</author>
|
192
|
+
<content type="html">
|
193
|
+
<pre style='white-space:pre-wrap;width:81ex'>Ensure meta_encoding checks meta charset tag (closes #919)</pre>
|
194
|
+
</content>
|
195
|
+
</entry>
|
196
|
+
<entry>
|
197
|
+
<id>tag:github.com,2008:Grit::Commit/14b7dc21bbeddec1990726760e6f6cc11e71542e</id>
|
198
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/14b7dc21bbeddec1990726760e6f6cc11e71542e"/>
|
199
|
+
<title>
|
200
|
+
Updated ROADMAP
|
201
|
+
</title>
|
202
|
+
<updated>2013-06-14T06:00:57-07:00</updated>
|
203
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
204
|
+
<author>
|
205
|
+
<name>injekt</name>
|
206
|
+
<uri>https://github.com/injekt</uri>
|
207
|
+
</author>
|
208
|
+
<content type="html">
|
209
|
+
<pre style='white-space:pre-wrap;width:81ex'>Updated ROADMAP</pre>
|
210
|
+
</content>
|
211
|
+
</entry>
|
212
|
+
<entry>
|
213
|
+
<id>tag:github.com,2008:Grit::Commit/d1b0afd02f8a2b783380bdfde3acfabf021a0c5a</id>
|
214
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/d1b0afd02f8a2b783380bdfde3acfabf021a0c5a"/>
|
215
|
+
<title>
|
216
|
+
Merge pull request #858 from ykzts/feature/not-only-child
|
217
|
+
</title>
|
218
|
+
<updated>2013-06-14T05:53:28-07:00</updated>
|
219
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
220
|
+
<author>
|
221
|
+
<name>injekt</name>
|
222
|
+
<uri>https://github.com/injekt</uri>
|
223
|
+
</author>
|
224
|
+
<content type="html">
|
225
|
+
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #858 from ykzts/feature/not-only-child
|
226
|
+
|
227
|
+
Add feature that the ':only-child' pseudo class should work even though it's in ':not' pseudo class.</pre>
|
228
|
+
</content>
|
229
|
+
</entry>
|
230
|
+
<entry>
|
231
|
+
<id>tag:github.com,2008:Grit::Commit/d24eb8508c69f2cf336f1ff1b6887fcc3b317fbc</id>
|
232
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/d24eb8508c69f2cf336f1ff1b6887fcc3b317fbc"/>
|
233
|
+
<title>
|
234
|
+
Merge pull request #886 from Mange/negative-nth
|
235
|
+
</title>
|
236
|
+
<updated>2013-06-14T05:50:13-07:00</updated>
|
237
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/9077af710bdadc972a7898e457bf6ec1?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
238
|
+
<author>
|
239
|
+
<name>injekt</name>
|
240
|
+
<uri>https://github.com/injekt</uri>
|
241
|
+
</author>
|
242
|
+
<content type="html">
|
243
|
+
<pre style='white-space:pre-wrap;width:81ex'>Merge pull request #886 from Mange/negative-nth
|
244
|
+
|
245
|
+
Add support for an-b in nth selectors</pre>
|
246
|
+
</content>
|
247
|
+
</entry>
|
248
|
+
<entry>
|
249
|
+
<id>tag:github.com,2008:Grit::Commit/11eaf3d3f1b84adf5225b6686119dbc6714b4009</id>
|
250
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/11eaf3d3f1b84adf5225b6686119dbc6714b4009"/>
|
251
|
+
<title>
|
252
|
+
Note 1.8 deprecation in README
|
253
|
+
</title>
|
254
|
+
<updated>2013-06-11T06:48:53-07:00</updated>
|
255
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/bd6e7860b5a891bff077aeaeb5434e60?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
256
|
+
<author>
|
257
|
+
<name>flavorjones</name>
|
258
|
+
<uri>https://github.com/flavorjones</uri>
|
259
|
+
</author>
|
260
|
+
<content type="html">
|
261
|
+
<pre style='white-space:pre-wrap;width:81ex'>Note 1.8 deprecation in README</pre>
|
262
|
+
</content>
|
263
|
+
</entry>
|
264
|
+
<entry>
|
265
|
+
<id>tag:github.com,2008:Grit::Commit/82a936a0ceba0508d29cc9f6da84c5a98ae7bede</id>
|
266
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/82a936a0ceba0508d29cc9f6da84c5a98ae7bede"/>
|
267
|
+
<title>
|
268
|
+
Fix a typo and DRY with dir_config() calls.
|
269
|
+
</title>
|
270
|
+
<updated>2013-06-10T21:01:03-07:00</updated>
|
271
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/74f896b312b786ee75a18073941e2457?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
272
|
+
<author>
|
273
|
+
<name>knu</name>
|
274
|
+
<uri>https://github.com/knu</uri>
|
275
|
+
</author>
|
276
|
+
<content type="html">
|
277
|
+
<pre style='white-space:pre-wrap;width:81ex'>Fix a typo and DRY with dir_config() calls.</pre>
|
278
|
+
</content>
|
279
|
+
</entry>
|
280
|
+
<entry>
|
281
|
+
<id>tag:github.com,2008:Grit::Commit/c7ef9b339054f8502e7f526b1b8054e3412cf7ba</id>
|
282
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/c7ef9b339054f8502e7f526b1b8054e3412cf7ba"/>
|
283
|
+
<title>
|
284
|
+
Iconv was for building libxml2 and not for nokogiri itself.
|
285
|
+
</title>
|
286
|
+
<updated>2013-06-10T17:55:20-07:00</updated>
|
287
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/74f896b312b786ee75a18073941e2457?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
288
|
+
<author>
|
289
|
+
<name>knu</name>
|
290
|
+
<uri>https://github.com/knu</uri>
|
291
|
+
</author>
|
292
|
+
<content type="html">
|
293
|
+
<pre style='white-space:pre-wrap;width:81ex'>Iconv was for building libxml2 and not for nokogiri itself.</pre>
|
294
|
+
</content>
|
295
|
+
</entry>
|
296
|
+
<entry>
|
297
|
+
<id>tag:github.com,2008:Grit::Commit/4c1c225b9409571156430aeb5bcf89c4f9dd4812</id>
|
298
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/4c1c225b9409571156430aeb5bcf89c4f9dd4812"/>
|
299
|
+
<title>
|
300
|
+
Make sure the MRI gem is built correctly.
|
301
|
+
</title>
|
302
|
+
<updated>2013-06-10T07:40:39-07:00</updated>
|
303
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/bd6e7860b5a891bff077aeaeb5434e60?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
304
|
+
<author>
|
305
|
+
<name>flavorjones</name>
|
306
|
+
<uri>https://github.com/flavorjones</uri>
|
307
|
+
</author>
|
308
|
+
<content type="html">
|
309
|
+
<pre style='white-space:pre-wrap;width:81ex'>Make sure the MRI gem is built correctly.</pre>
|
310
|
+
</content>
|
311
|
+
</entry>
|
312
|
+
<entry>
|
313
|
+
<id>tag:github.com,2008:Grit::Commit/b6100afd7a0ce17097fb3ca58ae8fe5e63522f6d</id>
|
314
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/b6100afd7a0ce17097fb3ca58ae8fe5e63522f6d"/>
|
315
|
+
<title>
|
316
|
+
Fiddling with the windows cross-compile gem logic.
|
317
|
+
</title>
|
318
|
+
<updated>2013-06-10T07:33:59-07:00</updated>
|
319
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/bd6e7860b5a891bff077aeaeb5434e60?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
320
|
+
<author>
|
321
|
+
<name>flavorjones</name>
|
322
|
+
<uri>https://github.com/flavorjones</uri>
|
323
|
+
</author>
|
324
|
+
<content type="html">
|
325
|
+
<pre style='white-space:pre-wrap;width:81ex'>Fiddling with the windows cross-compile gem logic.</pre>
|
326
|
+
</content>
|
327
|
+
</entry>
|
328
|
+
<entry>
|
329
|
+
<id>tag:github.com,2008:Grit::Commit/b1483de363524c882b5e682a3d3a6e6ab5d7511b</id>
|
330
|
+
<link type="text/html" rel="alternate" href="https://github.com/sparklemotion/nokogiri/commit/b1483de363524c882b5e682a3d3a6e6ab5d7511b"/>
|
331
|
+
<title>
|
332
|
+
build_all now uses ruby 1.9.3 to build everything.
|
333
|
+
</title>
|
334
|
+
<updated>2013-06-10T07:33:56-07:00</updated>
|
335
|
+
<media:thumbnail height="30" width="30" url="https://secure.gravatar.com/avatar/bd6e7860b5a891bff077aeaeb5434e60?s=30&d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-user-420.png"/>
|
336
|
+
<author>
|
337
|
+
<name>flavorjones</name>
|
338
|
+
<uri>https://github.com/flavorjones</uri>
|
339
|
+
</author>
|
340
|
+
<content type="html">
|
341
|
+
<pre style='white-space:pre-wrap;width:81ex'>build_all now uses ruby 1.9.3 to build everything.</pre>
|
342
|
+
</content>
|
343
|
+
</entry>
|
344
|
+
</feed>
|