nokogiri 1.2.3-x86-mswin32-60 → 1.4.5-x86-mswin32-60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
data/tasks/test.rb
CHANGED
@@ -1,67 +1,3 @@
|
|
1
|
-
# partial-loads-ok and undef-value-errors necessary to ignore
|
2
|
-
# spurious (and eminently ignorable) warnings from the ruby
|
3
|
-
# interpreter
|
4
|
-
VALGRIND_BASIC_OPTS = "--num-callers=50 --error-limit=no --partial-loads-ok=yes --undef-value-errors=no"
|
5
|
-
|
6
|
-
class NokogiriTestTask < Rake::TestTask
|
7
|
-
def initialize *args
|
8
|
-
super
|
9
|
-
%w[ ext lib bin test ].each do |dir|
|
10
|
-
self.libs << dir
|
11
|
-
end
|
12
|
-
self.test_files = FileList['test/**/test_*.rb'] +
|
13
|
-
FileList['test/**/*_test.rb']
|
14
|
-
self.verbose = "verbose"
|
15
|
-
self.warning = true
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
desc "run test suite under valgrind with basic ruby options"
|
20
|
-
NokogiriTestTask.new('test:valgrind').extend(Module.new {
|
21
|
-
def ruby *args
|
22
|
-
cmd = "valgrind #{VALGRIND_BASIC_OPTS} #{RUBY} #{args.join(' ')} test/test_nokogiri.rb --verbose=verbose"
|
23
|
-
puts cmd
|
24
|
-
system cmd
|
25
|
-
end
|
26
|
-
})
|
27
|
-
|
28
|
-
desc "run test suite under valgrind with memory-fill ruby options"
|
29
|
-
NokogiriTestTask.new('test:valgrind_mem').extend(Module.new {
|
30
|
-
def ruby *args
|
31
|
-
cmd = "valgrind #{VALGRIND_BASIC_OPTS} --freelist-vol=100000000 --malloc-fill=6D --free-fill=66 #{RUBY} #{args.join(' ')} test/test_nokogiri.rb --verbose=verbose"
|
32
|
-
puts cmd
|
33
|
-
system cmd
|
34
|
-
end
|
35
|
-
})
|
36
|
-
|
37
|
-
desc "run test suite under valgrind with memory-zero ruby options"
|
38
|
-
NokogiriTestTask.new('test:valgrind_mem0').extend(Module.new {
|
39
|
-
def ruby *args
|
40
|
-
cmd = "valgrind #{VALGRIND_BASIC_OPTS} --freelist-vol=100000000 --malloc-fill=00 --free-fill=00 #{RUBY} #{args.join(' ')} test/test_nokogiri.rb --verbose=verbose"
|
41
|
-
puts cmd
|
42
|
-
system cmd
|
43
|
-
end
|
44
|
-
})
|
45
|
-
|
46
|
-
desc "run test suite under gdb"
|
47
|
-
NokogiriTestTask.new('test:gdb').extend(Module.new {
|
48
|
-
def ruby *args
|
49
|
-
cmd = "gdb --args #{RUBY} #{args.join(' ')}"
|
50
|
-
puts cmd
|
51
|
-
system cmd
|
52
|
-
end
|
53
|
-
})
|
54
|
-
|
55
|
-
desc "test coverage"
|
56
|
-
NokogiriTestTask.new('test:coverage').extend(Module.new {
|
57
|
-
def ruby *args
|
58
|
-
rm_rf "coverage"
|
59
|
-
cmd = "rcov -x Library -I lib:ext:test #{args.join(' ')}"
|
60
|
-
puts cmd
|
61
|
-
system cmd
|
62
|
-
end
|
63
|
-
})
|
64
|
-
|
65
1
|
namespace :test do
|
66
2
|
desc "run test suite with aggressive GC"
|
67
3
|
task :gc => :build do
|
@@ -70,14 +6,32 @@ namespace :test do
|
|
70
6
|
end
|
71
7
|
|
72
8
|
desc "find call-seq in the rdoc"
|
73
|
-
task :
|
9
|
+
task :rdoc_call_seq => 'docs' do
|
74
10
|
Dir['doc/**/*.html'].each { |docfile|
|
75
11
|
next if docfile =~ /\.src/
|
76
12
|
puts "FAIL: #{docfile}" if File.read(docfile) =~ /call-seq/
|
77
13
|
}
|
78
14
|
end
|
79
15
|
|
80
|
-
desc "
|
16
|
+
desc "find all undocumented things"
|
17
|
+
task :rdoc => 'docs' do
|
18
|
+
base = File.expand_path(File.join(File.dirname(__FILE__), '..', 'doc'))
|
19
|
+
require 'test/unit'
|
20
|
+
test = Class.new(Test::Unit::TestCase)
|
21
|
+
Dir["#{base}/**/*.html"].each { |docfile|
|
22
|
+
test.class_eval(<<-eotest)
|
23
|
+
def test_#{docfile.sub("#{base}/", '').gsub(/[\/\.-]/, '_')}
|
24
|
+
assert_no_match(
|
25
|
+
/Not documented/,
|
26
|
+
File.read('#{docfile}'),
|
27
|
+
'#{docfile} has undocumented things'
|
28
|
+
)
|
29
|
+
end
|
30
|
+
eotest
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
desc "Test against multiple versions of libxml2 (MULTIXML2_DIR=directory)"
|
81
35
|
task :multixml2 do
|
82
36
|
MULTI_XML = File.join(ENV['HOME'], '.multixml2')
|
83
37
|
unless File.exists?(MULTI_XML)
|
@@ -117,10 +71,12 @@ namespace :test do
|
|
117
71
|
|
118
72
|
test_results = {}
|
119
73
|
libxslt = Dir[File.join(MULTI_XML, 'install', 'libxslt*')].first
|
120
|
-
|
74
|
+
|
75
|
+
directories = ENV['MULTIXML2_DIR'] ? [ENV['MULTIXML2_DIR']] : Dir[File.join(MULTI_XML, 'install', '*')]
|
76
|
+
directories.sort.reverse.each do |xml2_version|
|
121
77
|
next unless xml2_version =~ /libxml2/
|
122
|
-
extopts = "--with-xml2-include=#{xml2_version}/include/libxml2 --with-xml2-lib=#{xml2_version}/lib --with-xslt-dir=#{libxslt}"
|
123
|
-
cmd = "#{$0} clean test EXTOPTS='#{extopts}'"
|
78
|
+
extopts = "--with-xml2-include=#{xml2_version}/include/libxml2 --with-xml2-lib=#{xml2_version}/lib --with-xslt-dir=#{libxslt} --with-iconv-dir=/usr"
|
79
|
+
cmd = "#{$0} clean test EXTOPTS='#{extopts}' LD_LIBRARY_PATH='#{xml2_version}/lib'"
|
124
80
|
|
125
81
|
version = File.basename(xml2_version)
|
126
82
|
result = system(cmd)
|
data/test/css/test_nthiness.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "helper"
|
2
2
|
|
3
3
|
module Nokogiri
|
4
4
|
module CSS
|
@@ -42,7 +42,7 @@ module Nokogiri
|
|
42
42
|
<p class='not-empty'><b></b></p>
|
43
43
|
</html>
|
44
44
|
EOF
|
45
|
-
@parser = Nokogiri.
|
45
|
+
@parser = Nokogiri.HTML doc
|
46
46
|
end
|
47
47
|
|
48
48
|
|
@@ -140,8 +140,7 @@ EOF
|
|
140
140
|
<p id="4">p4 </p>
|
141
141
|
<p id="5">p5 </p>
|
142
142
|
EOF
|
143
|
-
parser = Nokogiri.
|
144
|
-
|
143
|
+
parser = Nokogiri.HTML doc
|
145
144
|
assert_equal 2, parser.search("#3 ~ p").size
|
146
145
|
assert_equal "p4 p5 ", parser.search("#3 ~ p").inner_text
|
147
146
|
assert_equal 0, parser.search("#5 ~ p").size
|
data/test/css/test_parser.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "helper"
|
2
2
|
|
3
3
|
module Nokogiri
|
4
4
|
module CSS
|
@@ -16,6 +16,10 @@ module Nokogiri
|
|
16
16
|
assert_raises(CSS::SyntaxError) { @parser.parse("a[x=]") }
|
17
17
|
end
|
18
18
|
|
19
|
+
def test_function_and_pseudo
|
20
|
+
assert_xpath '//child::text()[position() = 99]', @parser.parse('text():nth-of-type(99)')
|
21
|
+
end
|
22
|
+
|
19
23
|
def test_find_by_type
|
20
24
|
ast = @parser.parse("a:nth-child(2)").first
|
21
25
|
matches = ast.find_by_type(
|
@@ -54,6 +58,25 @@ module Nokogiri
|
|
54
58
|
)
|
55
59
|
end
|
56
60
|
|
61
|
+
def test_has
|
62
|
+
assert_xpath "//a[b]", @parser.parse("a:has(b)")
|
63
|
+
assert_xpath "//a[b/c]", @parser.parse("a:has(b > c)")
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_dashmatch
|
67
|
+
assert_xpath "//a[@class = 'bar' or starts-with(@class, concat('bar', '-'))]",
|
68
|
+
@parser.parse("a[@class|='bar']")
|
69
|
+
assert_xpath "//a[@class = 'bar' or starts-with(@class, concat('bar', '-'))]",
|
70
|
+
@parser.parse("a[@class |= 'bar']")
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_includes
|
74
|
+
assert_xpath "//a[contains(concat(\" \", @class, \" \"),concat(\" \", 'bar', \" \"))]",
|
75
|
+
@parser.parse("a[@class~='bar']")
|
76
|
+
assert_xpath "//a[contains(concat(\" \", @class, \" \"),concat(\" \", 'bar', \" \"))]",
|
77
|
+
@parser.parse("a[@class ~= 'bar']")
|
78
|
+
end
|
79
|
+
|
57
80
|
def test_function_with_arguments
|
58
81
|
assert_xpath "//*[position() = 2 and self::a]",
|
59
82
|
@parser.parse("a[2]")
|
@@ -64,12 +87,23 @@ module Nokogiri
|
|
64
87
|
def test_carrot
|
65
88
|
assert_xpath "//a[starts-with(@id, 'Boing')]",
|
66
89
|
@parser.parse("a[id^='Boing']")
|
90
|
+
assert_xpath "//a[starts-with(@id, 'Boing')]",
|
91
|
+
@parser.parse("a[id ^= 'Boing']")
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_suffix_match
|
95
|
+
assert_xpath "//a[substring(@id, string-length(@id) - string-length('Boing') + 1, string-length('Boing')) = 'Boing']",
|
96
|
+
@parser.parse("a[id$='Boing']")
|
97
|
+
assert_xpath "//a[substring(@id, string-length(@id) - string-length('Boing') + 1, string-length('Boing')) = 'Boing']",
|
98
|
+
@parser.parse("a[id $= 'Boing']")
|
67
99
|
end
|
68
100
|
|
69
101
|
def test_attributes_with_at
|
70
102
|
## This is non standard CSS
|
71
103
|
assert_xpath "//a[@id = 'Boing']",
|
72
104
|
@parser.parse("a[@id='Boing']")
|
105
|
+
assert_xpath "//a[@id = 'Boing']",
|
106
|
+
@parser.parse("a[@id = 'Boing']")
|
73
107
|
end
|
74
108
|
|
75
109
|
def test_attributes_with_at_and_stuff
|
@@ -82,6 +116,8 @@ module Nokogiri
|
|
82
116
|
## This is non standard CSS
|
83
117
|
assert_xpath "//a[child::text() != 'Boing']",
|
84
118
|
@parser.parse("a[text()!='Boing']")
|
119
|
+
assert_xpath "//a[child::text() != 'Boing']",
|
120
|
+
@parser.parse("a[text() != 'Boing']")
|
85
121
|
end
|
86
122
|
|
87
123
|
def test_function
|
@@ -96,6 +132,8 @@ module Nokogiri
|
|
96
132
|
## This is non standard CSS
|
97
133
|
assert_xpath "//a[contains(child::text(), 'Boing')]",
|
98
134
|
@parser.parse("a[text()*='Boing']")
|
135
|
+
assert_xpath "//a[contains(child::text(), 'Boing')]",
|
136
|
+
@parser.parse("a[text() *= 'Boing']")
|
99
137
|
|
100
138
|
## This is non standard CSS
|
101
139
|
assert_xpath "//script//comment()",
|
@@ -104,30 +142,31 @@ module Nokogiri
|
|
104
142
|
|
105
143
|
def test_nonstandard_nth_selectors
|
106
144
|
## These are non standard CSS
|
107
|
-
assert_xpath '//a[position() =
|
108
|
-
assert_xpath '//a[position() = 1]',
|
109
|
-
assert_xpath '//a[position() =
|
110
|
-
assert_xpath '//a[position() = 99]',
|
111
|
-
assert_xpath '//a[position() =
|
112
|
-
assert_xpath '//a[position() = last()]',
|
113
|
-
assert_xpath '//a[node()]',
|
145
|
+
assert_xpath '//a[position() = 1]', @parser.parse('a:first()')
|
146
|
+
assert_xpath '//a[position() = 1]', @parser.parse('a:first') # no parens
|
147
|
+
assert_xpath '//a[position() = 99]', @parser.parse('a:eq(99)')
|
148
|
+
assert_xpath '//a[position() = 99]', @parser.parse('a:nth(99)')
|
149
|
+
assert_xpath '//a[position() = last()]', @parser.parse('a:last()')
|
150
|
+
assert_xpath '//a[position() = last()]', @parser.parse('a:last') # no parens
|
151
|
+
assert_xpath '//a[node()]', @parser.parse('a:parent')
|
114
152
|
end
|
115
153
|
|
116
154
|
def test_standard_nth_selectors
|
117
|
-
assert_xpath '//a[position() =
|
118
|
-
assert_xpath '//a[position() = 1]',
|
119
|
-
assert_xpath '//a[position() =
|
120
|
-
assert_xpath '//a[position() =
|
121
|
-
assert_xpath '//a[position() = last()]',
|
122
|
-
assert_xpath '//a[position() = last()
|
123
|
-
assert_xpath '//a[position() = last() -
|
155
|
+
assert_xpath '//a[position() = 1]', @parser.parse('a:first-of-type()')
|
156
|
+
assert_xpath '//a[position() = 1]', @parser.parse('a:first-of-type') # no parens
|
157
|
+
assert_xpath '//a[position() = 99]', @parser.parse('a:nth-of-type(99)')
|
158
|
+
assert_xpath '//a[position() = last()]', @parser.parse('a:last-of-type()')
|
159
|
+
assert_xpath '//a[position() = last()]', @parser.parse('a:last-of-type') # no parens
|
160
|
+
assert_xpath '//a[position() = last()]', @parser.parse('a:nth-last-of-type(1)')
|
161
|
+
assert_xpath '//a[position() = last() - 98]', @parser.parse('a:nth-last-of-type(99)')
|
124
162
|
end
|
125
163
|
|
126
164
|
def test_nth_child_selectors
|
127
|
-
assert_xpath '//*[position() = 1 and self::a]',
|
128
|
-
assert_xpath '//*[position() =
|
129
|
-
assert_xpath '//*[position() =
|
130
|
-
assert_xpath '//*[position() = last()
|
165
|
+
assert_xpath '//*[position() = 1 and self::a]', @parser.parse('a:first-child')
|
166
|
+
assert_xpath '//*[position() = 99 and self::a]', @parser.parse('a:nth-child(99)')
|
167
|
+
assert_xpath '//*[position() = last() and self::a]', @parser.parse('a:last-child')
|
168
|
+
assert_xpath '//*[position() = last() and self::a]', @parser.parse('a:nth-last-child(1)')
|
169
|
+
assert_xpath '//*[position() = last() - 98 and self::a]', @parser.parse('a:nth-last-child(99)')
|
131
170
|
end
|
132
171
|
|
133
172
|
def test_miscellaneous_selectors
|
@@ -147,16 +186,32 @@ module Nokogiri
|
|
147
186
|
assert_xpath '//a[(position() <= 3) and (((position()-3) mod 1) = 0)]', @parser.parse('a:nth-of-type(-n+3)')
|
148
187
|
assert_xpath '//a[(position() >= 3) and (((position()-3) mod 1) = 0)]', @parser.parse('a:nth-of-type(1n+3)')
|
149
188
|
assert_xpath '//a[(position() >= 3) and (((position()-3) mod 1) = 0)]', @parser.parse('a:nth-of-type(n+3)')
|
189
|
+
|
190
|
+
assert_xpath '//a[((last()-position()+1) mod 2) = 0]', @parser.parse('a:nth-last-of-type(2n)')
|
191
|
+
assert_xpath '//a[((last()-position()+1) >= 1) and ((((last()-position()+1)-1) mod 2) = 0)]', @parser.parse('a:nth-last-of-type(2n+1)')
|
192
|
+
assert_xpath '//a[((last()-position()+1) mod 2) = 0]', @parser.parse('a:nth-last-of-type(even)')
|
193
|
+
assert_xpath '//a[((last()-position()+1) >= 1) and ((((last()-position()+1)-1) mod 2) = 0)]', @parser.parse('a:nth-last-of-type(odd)')
|
194
|
+
assert_xpath '//a[((last()-position()+1) >= 3) and ((((last()-position()+1)-3) mod 4) = 0)]', @parser.parse('a:nth-last-of-type(4n+3)')
|
195
|
+
assert_xpath '//a[((last()-position()+1) <= 3) and ((((last()-position()+1)-3) mod 1) = 0)]', @parser.parse('a:nth-last-of-type(-1n+3)')
|
196
|
+
assert_xpath '//a[((last()-position()+1) <= 3) and ((((last()-position()+1)-3) mod 1) = 0)]', @parser.parse('a:nth-last-of-type(-n+3)')
|
197
|
+
assert_xpath '//a[((last()-position()+1) >= 3) and ((((last()-position()+1)-3) mod 1) = 0)]', @parser.parse('a:nth-last-of-type(1n+3)')
|
198
|
+
assert_xpath '//a[((last()-position()+1) >= 3) and ((((last()-position()+1)-3) mod 1) = 0)]', @parser.parse('a:nth-last-of-type(n+3)')
|
150
199
|
end
|
151
200
|
|
152
201
|
def test_preceding_selector
|
153
|
-
assert_xpath "//
|
202
|
+
assert_xpath "//E/following-sibling::F",
|
154
203
|
@parser.parse("E ~ F")
|
204
|
+
|
205
|
+
assert_xpath "//E/following-sibling::F//G",
|
206
|
+
@parser.parse("E ~ F G")
|
155
207
|
end
|
156
208
|
|
157
209
|
def test_direct_preceding_selector
|
158
210
|
assert_xpath "//E/following-sibling::*[1]/self::F",
|
159
211
|
@parser.parse("E + F")
|
212
|
+
|
213
|
+
assert_xpath "//E/following-sibling::*[1]/self::F//G",
|
214
|
+
@parser.parse("E + F G")
|
160
215
|
end
|
161
216
|
|
162
217
|
def test_attribute
|
data/test/css/test_tokenizer.rb
CHANGED
@@ -1,4 +1,14 @@
|
|
1
|
-
|
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
|
2
12
|
|
3
13
|
module Nokogiri
|
4
14
|
module CSS
|
@@ -8,6 +18,18 @@ module Nokogiri
|
|
8
18
|
@scanner = Nokogiri::CSS::Tokenizer.new
|
9
19
|
end
|
10
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
|
+
|
11
33
|
def test_tokenize_bad_single_quote
|
12
34
|
@scanner.scan("'")
|
13
35
|
assert_tokens([["'", "'"]], @scanner)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "helper"
|
2
2
|
|
3
3
|
module Nokogiri
|
4
4
|
module CSS
|
@@ -8,6 +8,15 @@ module Nokogiri
|
|
8
8
|
@parser = Nokogiri::CSS::Parser.new
|
9
9
|
end
|
10
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(position() = last())]',
|
17
|
+
@parser.parse('ol > *:not(:last-child)'))
|
18
|
+
end
|
19
|
+
|
11
20
|
def test_function_calls_allow_at_params
|
12
21
|
assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)'))
|
13
22
|
assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)'))
|
@@ -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
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require "helper"
|
2
|
+
|
3
|
+
if defined?(Nokogiri::LibXML)
|
4
|
+
|
5
|
+
class FFI::TestDocument < Nokogiri::TestCase
|
6
|
+
|
7
|
+
def test_ruby_doc_reflection
|
8
|
+
doc = Nokogiri::XML("<root><foo>foo</foo></root>")
|
9
|
+
assert_equal doc, doc.cstruct.ruby_doc
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_ruby_doc_setter
|
13
|
+
doc = Nokogiri::XML("<root><foo>foo</foo></root>")
|
14
|
+
foo = "foobar"
|
15
|
+
doc.cstruct.ruby_doc = foo
|
16
|
+
assert_equal foo, doc.cstruct.ruby_doc
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_unlinked_nodes
|
20
|
+
doc = Nokogiri::XML("<root><foo>foo</foo></root>")
|
21
|
+
assert_instance_of Nokogiri::LibXML::XmlNodeSetCast, doc.cstruct.unlinked_nodes
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_unlinked_nodes_contains_unlinked_nodes
|
25
|
+
doc = Nokogiri::XML("<root><foo>foo</foo></root>")
|
26
|
+
node = doc.xpath('//foo').first
|
27
|
+
assert_equal 0, doc.cstruct.unlinked_nodes[:nodeNr]
|
28
|
+
node.unlink
|
29
|
+
assert_equal 1, doc.cstruct.unlinked_nodes[:nodeNr]
|
30
|
+
assert_equal node.cstruct.pointer, doc.cstruct.unlinked_nodes[:nodeTab].get_pointer(0)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
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>
|