narf 0.6.2 → 0.6.3
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +22 -0
- data/lib/web/htmltools/xmltree.rb +2 -2
- data/lib/web/htmltools/xpath.rb +1 -1
- data/narf.gemspec +1 -1
- metadata +2 -460
- data/InstalledFiles +0 -2227
- data/config.save +0 -12
- data/doc/apache_cgi.txt~ +0 -17
- data/doc/fastcgi.txt~ +0 -19
- data/doc/rdoc/classes/Web.html +0 -369
- data/doc/rdoc/classes/Web.src/M000002.html +0 -15
- data/doc/rdoc/classes/Web.src/M000003.html +0 -15
- data/doc/rdoc/classes/Web.src/M000004.html +0 -15
- data/doc/rdoc/classes/Web.src/M000005.html +0 -15
- data/doc/rdoc/classes/Web.src/M000006.html +0 -20
- data/doc/rdoc/classes/Web.src/M000007.html +0 -18
- data/doc/rdoc/classes/Web.src/M000008.html +0 -18
- data/doc/rdoc/classes/Web.src/M000009.html +0 -18
- data/doc/rdoc/classes/Web.src/M000010.html +0 -15
- data/doc/rdoc/classes/Web.src/M000011.html +0 -15
- data/doc/rdoc/classes/Web.src/M000012.html +0 -15
- data/doc/rdoc/classes/Web/CGD.html +0 -173
- data/doc/rdoc/classes/Web/CGD.src/M000037.html +0 -24
- data/doc/rdoc/classes/Web/CGD.src/M000038.html +0 -24
- data/doc/rdoc/classes/Web/CGD.src/M000039.html +0 -15
- data/doc/rdoc/classes/Web/CGD.src/M000040.html +0 -15
- data/doc/rdoc/classes/Web/CGD.src/M000041.html +0 -23
- data/doc/rdoc/classes/Web/CGI.html +0 -946
- data/doc/rdoc/classes/Web/CGI.src/M000051.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000052.html +0 -24
- data/doc/rdoc/classes/Web/CGI.src/M000053.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000054.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000055.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000056.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000057.html +0 -17
- data/doc/rdoc/classes/Web/CGI.src/M000058.html +0 -34
- data/doc/rdoc/classes/Web/CGI.src/M000059.html +0 -22
- data/doc/rdoc/classes/Web/CGI.src/M000060.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000061.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000062.html +0 -19
- data/doc/rdoc/classes/Web/CGI.src/M000063.html +0 -18
- data/doc/rdoc/classes/Web/CGI.src/M000064.html +0 -19
- data/doc/rdoc/classes/Web/CGI.src/M000065.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000066.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000067.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000068.html +0 -13
- data/doc/rdoc/classes/Web/CGI.src/M000069.html +0 -13
- data/doc/rdoc/classes/Web/CGI.src/M000070.html +0 -13
- data/doc/rdoc/classes/Web/CGI.src/M000071.html +0 -13
- data/doc/rdoc/classes/Web/CGI.src/M000072.html +0 -19
- data/doc/rdoc/classes/Web/CGI.src/M000073.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000074.html +0 -19
- data/doc/rdoc/classes/Web/CGI.src/M000075.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000076.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000077.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000078.html +0 -20
- data/doc/rdoc/classes/Web/CGI.src/M000079.html +0 -36
- data/doc/rdoc/classes/Web/CGI.src/M000080.html +0 -19
- data/doc/rdoc/classes/Web/CGI.src/M000081.html +0 -18
- data/doc/rdoc/classes/Web/CGI.src/M000082.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000083.html +0 -17
- data/doc/rdoc/classes/Web/CGI.src/M000084.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000085.html +0 -16
- data/doc/rdoc/classes/Web/CGI.src/M000086.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000087.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000088.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000089.html +0 -16
- data/doc/rdoc/classes/Web/CGI.src/M000090.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000091.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000092.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000093.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000094.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000095.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000096.html +0 -19
- data/doc/rdoc/classes/Web/CGI.src/M000097.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000098.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000099.html +0 -43
- data/doc/rdoc/classes/Web/CGI.src/M000100.html +0 -18
- data/doc/rdoc/classes/Web/CGI.src/M000101.html +0 -20
- data/doc/rdoc/classes/Web/CGI.src/M000102.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000103.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000104.html +0 -15
- data/doc/rdoc/classes/Web/CGI.src/M000105.html +0 -24
- data/doc/rdoc/classes/Web/CGI.src/M000106.html +0 -24
- data/doc/rdoc/classes/Web/CGI.src/M000107.html +0 -22
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.html +0 -104
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000118.html +0 -15
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000119.html +0 -15
- data/doc/rdoc/classes/Web/CaseInsensitiveHash.src/M000120.html +0 -15
- data/doc/rdoc/classes/Web/Mime.html +0 -122
- data/doc/rdoc/classes/Web/Mime.src/M000118.html +0 -15
- data/doc/rdoc/classes/Web/Mime.src/M000119.html +0 -15
- data/doc/rdoc/classes/Web/Mime.src/M000120.html +0 -23
- data/doc/rdoc/classes/Web/Mime.src/M000121.html +0 -15
- data/doc/rdoc/classes/Web/Mime.src/M000122.html +0 -15
- data/doc/rdoc/classes/Web/Mime.src/M000123.html +0 -23
- data/doc/rdoc/classes/Web/Mime.src/M000124.html +0 -15
- data/doc/rdoc/classes/Web/Narflates.html +0 -134
- data/doc/rdoc/classes/Web/Parser.html +0 -219
- data/doc/rdoc/classes/Web/Parser.src/M000013.html +0 -21
- data/doc/rdoc/classes/Web/Parser.src/M000014.html +0 -19
- data/doc/rdoc/classes/Web/Parser.src/M000015.html +0 -21
- data/doc/rdoc/classes/Web/Parser.src/M000016.html +0 -15
- data/doc/rdoc/classes/Web/Parser.src/M000017.html +0 -30
- data/doc/rdoc/classes/Web/Parser.src/M000018.html +0 -15
- data/doc/rdoc/classes/Web/Parser.src/M000019.html +0 -19
- data/doc/rdoc/classes/Web/Parser.src/M000020.html +0 -27
- data/doc/rdoc/classes/Web/Parser.src/M000021.html +0 -15
- data/doc/rdoc/classes/Web/Parser.src/M000022.html +0 -16
- data/doc/rdoc/classes/Web/Parser.src/M000023.html +0 -18
- data/doc/rdoc/classes/Web/Session.html +0 -178
- data/doc/rdoc/classes/Web/Session.src/M000042.html +0 -20
- data/doc/rdoc/classes/Web/Session.src/M000043.html +0 -19
- data/doc/rdoc/classes/Web/Session.src/M000044.html +0 -21
- data/doc/rdoc/classes/Web/Session.src/M000045.html +0 -21
- data/doc/rdoc/classes/Web/Session.src/M000046.html +0 -15
- data/doc/rdoc/classes/Web/Session.src/M000047.html +0 -17
- data/doc/rdoc/classes/Web/Session.src/M000048.html +0 -15
- data/doc/rdoc/classes/Web/Session.src/M000049.html +0 -15
- data/doc/rdoc/classes/Web/Session.src/M000050.html +0 -16
- data/doc/rdoc/classes/Web/Testing.html +0 -474
- data/doc/rdoc/classes/Web/Testing.src/M000024.html +0 -15
- data/doc/rdoc/classes/Web/Testing.src/M000025.html +0 -25
- data/doc/rdoc/classes/Web/Testing.src/M000026.html +0 -15
- data/doc/rdoc/classes/Web/Testing.src/M000027.html +0 -25
- data/doc/rdoc/classes/Web/Testing.src/M000028.html +0 -57
- data/doc/rdoc/classes/Web/Testing.src/M000029.html +0 -15
- data/doc/rdoc/classes/Web/Testing.src/M000030.html +0 -15
- data/doc/rdoc/classes/Web/Testing.src/M000031.html +0 -15
- data/doc/rdoc/classes/Web/Testing.src/M000032.html +0 -15
- data/doc/rdoc/classes/Web/Testing.src/M000033.html +0 -15
- data/doc/rdoc/classes/Web/Testing.src/M000034.html +0 -15
- data/doc/rdoc/classes/Web/Testing.src/M000035.html +0 -15
- data/doc/rdoc/classes/Web/Testing.src/M000036.html +0 -18
- data/doc/rdoc/classes/Web/Upload.html +0 -160
- data/doc/rdoc/classes/Web/Upload.src/M000108.html +0 -25
- data/doc/rdoc/classes/Web/Upload.src/M000109.html +0 -18
- data/doc/rdoc/classes/Web/Upload.src/M000110.html +0 -16
- data/doc/rdoc/classes/Web/Upload.src/M000111.html +0 -16
- data/doc/rdoc/classes/Web/Wiki.html +0 -249
- data/doc/rdoc/classes/Web/Wiki.src/M000112.html +0 -25
- data/doc/rdoc/classes/Web/Wiki.src/M000113.html +0 -15
- data/doc/rdoc/classes/Web/Wiki.src/M000114.html +0 -26
- data/doc/rdoc/classes/Web/Wiki.src/M000115.html +0 -21
- data/doc/rdoc/classes/Web/Wiki.src/M000116.html +0 -18
- data/doc/rdoc/classes/Web/Wiki.src/M000117.html +0 -19
- data/doc/rdoc/created.rid +0 -1
- data/doc/rdoc/files/README.html +0 -230
- data/doc/rdoc/files/doc/apache_cgi_txt.html +0 -76
- data/doc/rdoc/files/doc/fastcgi_txt.html +0 -82
- data/doc/rdoc/files/doc/mod_ruby_txt.html +0 -62
- data/doc/rdoc/files/doc/webrick_txt.html +0 -79
- data/doc/rdoc/files/examples/examples_rdoc.html +0 -73
- data/doc/rdoc/files/lib/web/cgi_rb.html +0 -75
- data/doc/rdoc/files/lib/web/mime_rb.html +0 -67
- data/doc/rdoc/files/lib/web/parser_rb.html +0 -73
- data/doc/rdoc/files/lib/web/session_rb.html +0 -73
- data/doc/rdoc/files/lib/web/template_rb.html +0 -73
- data/doc/rdoc/files/lib/web/testing_rb.html +0 -67
- data/doc/rdoc/files/lib/web/upload_rb.html +0 -73
- data/doc/rdoc/files/lib/web/wiki_rb.html +0 -79
- data/doc/rdoc/files/lib/web_rb.html +0 -116
- data/doc/rdoc/files/lib/web_rb.src/M000001.html +0 -15
- data/doc/rdoc/fr_class_index.html +0 -47
- data/doc/rdoc/fr_file_index.html +0 -52
- data/doc/rdoc/fr_method_index.html +0 -158
- data/doc/rdoc/index.html +0 -22
- data/doc/rdoc/rdoc-style.css +0 -99
- data/examples/admin.rb~ +0 -5
- data/examples/cookbook.rdoc~ +0 -238
- data/examples/examples.rdoc~ +0 -17
- data/examples/hello.world.rb~ +0 -3
- data/examples/session.rb~ +0 -31
- data/examples/test/test.hello.world.rb~ +0 -9
- data/examples/test/test.session.rb~ +0 -37
- data/examples/wiki.rb~ +0 -5
- data/lib/web.rb~ +0 -290
- data/lib/web/#assertinclude.rb# +0 -110
- data/lib/web/assertinclude.rb~ +0 -110
- data/lib/web/cgi.rb~ +0 -640
- data/lib/web/htmlparser/html-parser.rb~ +0 -429
- data/lib/web/htmlparser/sgml-parser.rb~ +0 -332
- data/lib/web/htmltools/element.rb~ +0 -296
- data/lib/web/htmltools/stparser.rb~ +0 -276
- data/lib/web/htmltools/tags.rb~ +0 -286
- data/lib/web/htmltools/tree.rb~ +0 -139
- data/lib/web/htmltools/xmltree.rb~ +0 -160
- data/lib/web/htmltools/xpath.rb~ +0 -71
- data/lib/web/parser.rb~ +0 -288
- data/lib/web/request.rb~ +0 -238
- data/lib/web/runner.rb~ +0 -26
- data/lib/web/sapi/fastcgi.rb~ +0 -25
- data/lib/web/sapi/mod_ruby.rb~ +0 -46
- data/lib/web/sapi/webrick.rb~ +0 -89
- data/lib/web/session.rb~ +0 -75
- data/lib/web/tagparser.rb~ +0 -96
- data/lib/web/template.rb~ +0 -613
- data/lib/web/testing.rb~ +0 -546
- data/lib/web/unit/response.rb~ +0 -461
- data/lib/web/unit/ui/cui/testrunner.rb~ +0 -50
- data/lib/web/upload.rb~ +0 -262
- data/lib/web/wiki.rb~ +0 -517
- data/lib/web/wiki/linker.rb~ +0 -72
- data/lib/web/wiki/mime.rb~ +0 -68
- data/lib/web/wiki/page.rb~ +0 -192
- data/lib/web/wiki/resources/#edit.html# +0 -65
- data/lib/web/wiki/resources/admin.html~ +0 -13
- data/lib/web/wiki/resources/default-content_editor.html~ +0 -1
- data/lib/web/wiki/resources/edit.html~ +0 -2
- data/lib/web/wiki/resources/home.html~ +0 -10
- data/lib/web/wiki/resources/htmlarea/ChangeLog +0 -1185
- data/lib/web/wiki/resources/htmlarea/dialog.js +0 -72
- data/lib/web/wiki/resources/htmlarea/examples/2-areas.cgi +0 -16
- data/lib/web/wiki/resources/htmlarea/examples/2-areas.html +0 -158
- data/lib/web/wiki/resources/htmlarea/examples/context-menu.html +0 -95
- data/lib/web/wiki/resources/htmlarea/examples/core.html +0 -184
- data/lib/web/wiki/resources/htmlarea/examples/css.html +0 -88
- data/lib/web/wiki/resources/htmlarea/examples/custom.css +0 -29
- data/lib/web/wiki/resources/htmlarea/examples/full-page.html +0 -75
- data/lib/web/wiki/resources/htmlarea/examples/fully-loaded.html +0 -248
- data/lib/web/wiki/resources/htmlarea/examples/index.html +0 -40
- data/lib/web/wiki/resources/htmlarea/examples/spell-checker.html +0 -132
- data/lib/web/wiki/resources/htmlarea/examples/table-operations.html +0 -116
- data/lib/web/wiki/resources/htmlarea/examples/test.cgi +0 -21
- data/lib/web/wiki/resources/htmlarea/htmlarea.css +0 -180
- data/lib/web/wiki/resources/htmlarea/htmlarea.js +0 -2175
- data/lib/web/wiki/resources/htmlarea/images/ed_about.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_center.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_justify.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_left.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_align_right.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_blank.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_charmap.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_color_bg.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_color_fg.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_copy.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_custom.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_cut.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_bold.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_italic.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_strike.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_sub.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_sup.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_format_underline.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_help.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_hr.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_html.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_image.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_indent_less.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_indent_more.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_left_to_right.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_link.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_list_bullet.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_list_num.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_paste.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_redo.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_right_to_left.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_save.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_show_border.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_splitcel.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/ed_undo.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/fullscreen_maximize.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/fullscreen_minimize.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/images/insert_table.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/index.html +0 -199
- data/lib/web/wiki/resources/htmlarea/lang/b5.js +0 -36
- data/lib/web/wiki/resources/htmlarea/lang/cz.js +0 -63
- data/lib/web/wiki/resources/htmlarea/lang/da.js +0 -38
- data/lib/web/wiki/resources/htmlarea/lang/de.js +0 -54
- data/lib/web/wiki/resources/htmlarea/lang/ee.js +0 -63
- data/lib/web/wiki/resources/htmlarea/lang/el.js +0 -75
- data/lib/web/wiki/resources/htmlarea/lang/en.js +0 -88
- data/lib/web/wiki/resources/htmlarea/lang/es.js +0 -51
- data/lib/web/wiki/resources/htmlarea/lang/fi.js +0 -46
- data/lib/web/wiki/resources/htmlarea/lang/fr.js +0 -61
- data/lib/web/wiki/resources/htmlarea/lang/gb.js +0 -36
- data/lib/web/wiki/resources/htmlarea/lang/he.js +0 -63
- data/lib/web/wiki/resources/htmlarea/lang/hu.js +0 -63
- data/lib/web/wiki/resources/htmlarea/lang/it.js +0 -54
- data/lib/web/wiki/resources/htmlarea/lang/ja-euc.js +0 -37
- data/lib/web/wiki/resources/htmlarea/lang/ja-jis.js +0 -37
- data/lib/web/wiki/resources/htmlarea/lang/ja-sjis.js +0 -37
- data/lib/web/wiki/resources/htmlarea/lang/ja-utf8.js +0 -37
- data/lib/web/wiki/resources/htmlarea/lang/lt.js +0 -55
- data/lib/web/wiki/resources/htmlarea/lang/lv.js +0 -55
- data/lib/web/wiki/resources/htmlarea/lang/nb.js +0 -36
- data/lib/web/wiki/resources/htmlarea/lang/nl.js +0 -90
- data/lib/web/wiki/resources/htmlarea/lang/no.js +0 -79
- data/lib/web/wiki/resources/htmlarea/lang/pl.js +0 -36
- data/lib/web/wiki/resources/htmlarea/lang/pt_br.js +0 -37
- data/lib/web/wiki/resources/htmlarea/lang/ro.js +0 -80
- data/lib/web/wiki/resources/htmlarea/lang/ru.js +0 -63
- data/lib/web/wiki/resources/htmlarea/lang/se.js +0 -38
- data/lib/web/wiki/resources/htmlarea/lang/si.js +0 -63
- data/lib/web/wiki/resources/htmlarea/lang/vn.js +0 -51
- data/lib/web/wiki/resources/htmlarea/license.txt +0 -30
- data/lib/web/wiki/resources/htmlarea/plugins/CSS/css.js +0 -116
- data/lib/web/wiki/resources/htmlarea/plugins/CSS/lang/en.js +0 -2
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/context-menu.js +0 -416
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/de.js +0 -59
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/el.js +0 -57
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/en.js +0 -66
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/lang/nl.js +0 -66
- data/lib/web/wiki/resources/htmlarea/plugins/ContextMenu/menu.css +0 -64
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/full-page.js +0 -143
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/img/docprop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/en.js +0 -25
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/lang/ro.js +0 -25
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/popups/docprop.html +0 -131
- data/lib/web/wiki/resources/htmlarea/plugins/FullPage/test.html +0 -89
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/img/spell-check.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/cz.js +0 -37
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/da.js +0 -37
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/de.js +0 -28
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/en.js +0 -38
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/hu.js +0 -37
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/it.js +0 -28
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/lang/ro.js +0 -37
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/readme-tech.html +0 -114
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-logic.cgi +0 -210
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-style.css +0 -10
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.html +0 -122
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-check-ui.js +0 -397
- data/lib/web/wiki/resources/htmlarea/plugins/SpellChecker/spell-checker.js +0 -79
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-after.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-insert-before.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-merge.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/cell-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-after.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-insert-before.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/col-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-delete.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-above.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-insert-under.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/row-split.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/img/table-prop.gif +0 -0
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/cz.js +0 -90
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/da.js +0 -90
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/de.js +0 -81
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/el.js +0 -81
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/en.js +0 -90
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/fi.js +0 -66
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/hu.js +0 -63
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/it.js +0 -81
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/nl.js +0 -90
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/no.js +0 -91
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/lang/ro.js +0 -90
- data/lib/web/wiki/resources/htmlarea/plugins/TableOperations/table-operations.js +0 -1160
- data/lib/web/wiki/resources/htmlarea/popupdiv.js +0 -369
- data/lib/web/wiki/resources/htmlarea/popups/about.html +0 -378
- data/lib/web/wiki/resources/htmlarea/popups/blank.html +0 -2
- data/lib/web/wiki/resources/htmlarea/popups/custom2.html +0 -35
- data/lib/web/wiki/resources/htmlarea/popups/editor_help.html +0 -16
- data/lib/web/wiki/resources/htmlarea/popups/fullscreen.html +0 -133
- data/lib/web/wiki/resources/htmlarea/popups/insert_image.html +0 -191
- data/lib/web/wiki/resources/htmlarea/popups/insert_table.html +0 -174
- data/lib/web/wiki/resources/htmlarea/popups/link.html +0 -142
- data/lib/web/wiki/resources/htmlarea/popups/old-fullscreen.html +0 -131
- data/lib/web/wiki/resources/htmlarea/popups/old_insert_image.html +0 -206
- data/lib/web/wiki/resources/htmlarea/popups/popup.js +0 -109
- data/lib/web/wiki/resources/htmlarea/popups/select_color.html +0 -347
- data/lib/web/wiki/resources/htmlarea/popupwin.js +0 -139
- data/lib/web/wiki/resources/htmlarea/reference.html +0 -523
- data/lib/web/wiki/resources/htmlarea/release-notes.html +0 -165
- data/lib/web/wiki/resources/illustration.html~ +0 -1
- data/lib/web/wiki/resources/index.html~ +0 -4
- data/lib/web/wiki/resources/more_news.html~ +0 -5
- data/lib/web/wiki/resources/more_news_rss_0.91.html +0 -23
- data/lib/web/wiki/resources/page_history.html~ +0 -19
- data/lib/web/wiki/resources/template.html~ +0 -13
- data/narf.gemspec~ +0 -40
- data/sapi/apache_cgi/INSTALL.txt~ +0 -9
- data/sapi/apache_cgi/README~ +0 -0
- data/sapi/fastcgi/INSTALL.txt~ +0 -17
- data/sapi/mod_ruby/INSTALL.txt~ +0 -5
- data/sapi/webrick/INSTALL.txt~ +0 -21
- data/sapi/webrick/run_webrick.rb~ +0 -16
- data/scripts/makedist.rb~ +0 -49
- data/test/mod_ruby_stub.rb~ +0 -38
- data/test/test.action.rb~ +0 -142
- data/test/test.assertinclude.rb~ +0 -109
- data/test/test.narf.cgi.rb~ +0 -105
- data/test/test.request.rb~ +0 -328
- data/test/test.response.rb~ +0 -556
- data/test/test.template.rb~ +0 -832
- data/test/test.web.test.rb~ +0 -461
- data/test/webunit/test_cookie.rb~ +0 -128
- data/test/webunit/test_form.rb~ +0 -43
- data/test/webunit/test_multipart.rb~ +0 -53
- data/test/webunit/test_params.rb~ +0 -211
- data/test/webunit/test_response.rb~ +0 -145
- data/test/webunit/test_site/assert.html~ +0 -1
- data/test/webunit/test_site/auth/index.html~ +0 -1
- data/test/webunit/test_site/badtags.html~ +0 -1
- data/test/webunit/test_site/cookie.cgi~ +0 -35
- data/test/webunit/test_site/document.xml~ +0 -1
- data/test/webunit/test_site/form.html~ +0 -1
- data/test/webunit/test_site/frame-0.html~ +0 -1
- data/test/webunit/test_site/frame-1.html~ +0 -1
- data/test/webunit/test_site/frame.html~ +0 -1
- data/test/webunit/test_site/image.html~ +0 -1
- data/test/webunit/test_site/include.cgi~ +0 -10
- data/test/webunit/test_site/jscript-0.html~ +0 -1
- data/test/webunit/test_site/jscript-1.html~ +0 -1
- data/test/webunit/test_site/jscript.html~ +0 -1
- data/test/webunit/test_site/link.html~ +0 -1
- data/test/webunit/test_site/multipart.cgi~ +0 -25
- data/test/webunit/test_site/multipart.html~ +0 -1
- data/test/webunit/test_site/params.html~ +0 -1
- data/test/webunit/test_site/redirect.cgi~ +0 -14
- data/test/webunit/test_site/response.html~ +0 -1
- data/test/webunit/test_site/simple.cgi~ +0 -17
- data/test/webunit/test_site/stock.cgi~ +0 -34
- data/test/webunit/test_site/table.html~ +0 -1
- data/test/webunit/test_site/test.cgi~ +0 -25
- data/test/wiki/test.history.rb~ +0 -254
- data/test/wiki/test.illustration_page.rb~ +0 -287
- data/test/wiki/test.tarpit.rb~ +0 -40
- data/test/wiki/test.wiki.rb~ +0 -295
@@ -1,296 +0,0 @@
|
|
1
|
-
# Copyright:: Copyright (C) 2002, Ned Konz <ned@bike-nomad.com>
|
2
|
-
# License:: Same as Ruby's
|
3
|
-
# CVS ID: $Id: element.rb,v 1.8 2002/06/04 01:55:59 ned Exp $
|
4
|
-
|
5
|
-
# This module is a mix-in that provides parent/child behavior to real
|
6
|
-
# Element classes. Because it defines <tt>each()</tt> and includes Enumerable,
|
7
|
-
# you can iterate through a tree using the usual Enumerable methods.
|
8
|
-
|
9
|
-
require 'web/htmltools/tags'
|
10
|
-
|
11
|
-
module HTMLTree
|
12
|
-
module TreeElement
|
13
|
-
include Enumerable
|
14
|
-
|
15
|
-
protected
|
16
|
-
|
17
|
-
def initialize_tree_element(parent_or_nil = nil, contents_or_nil = nil)
|
18
|
-
@_content, @_parent = contents_or_nil, parent_or_nil
|
19
|
-
if parent_or_nil
|
20
|
-
parent_or_nil.add_child(self)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
attr_accessor :_parent
|
25
|
-
|
26
|
-
public
|
27
|
-
|
28
|
-
# Add one or more children to this node.
|
29
|
-
def add_child(*children_to_add)
|
30
|
-
if can_have_children?
|
31
|
-
children_to_add.each do |child|
|
32
|
-
@_content << child
|
33
|
-
child._parent = self
|
34
|
-
end
|
35
|
-
else
|
36
|
-
raise(ArgumentError.exception('node cannot have children'))
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
alias_method(:add_children, :add_child)
|
41
|
-
|
42
|
-
# Remove one or more children from this node.
|
43
|
-
def remove_child(*children_to_remove)
|
44
|
-
if can_have_children?
|
45
|
-
children_to_remove.each do |child|
|
46
|
-
child._parent = nil if @_content.delete(child)
|
47
|
-
end
|
48
|
-
else
|
49
|
-
raise(ArgumentError.exception('node cannot have children'))
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
alias_method(:remove_children, :remove_child)
|
54
|
-
|
55
|
-
# Change my parent. Disconnects from prior parent, if any.
|
56
|
-
def parent=(parent_or_nil)
|
57
|
-
@_parent.remove_child(self) if @_parent
|
58
|
-
parent_or_nil.add_child(self) if parent_or_nil
|
59
|
-
end
|
60
|
-
|
61
|
-
# Return true if my content is a collection of Elements
|
62
|
-
# rather than actual data.
|
63
|
-
def can_have_children?
|
64
|
-
@_content.kind_of?(Array)
|
65
|
-
end
|
66
|
-
|
67
|
-
# Return a collection of my children. Returns an empty Array if I am a
|
68
|
-
# data element, just to keep other methods simple.
|
69
|
-
def children
|
70
|
-
can_have_children? ? @_content : []
|
71
|
-
end
|
72
|
-
|
73
|
-
# Return my content; either my children or my data.
|
74
|
-
def content
|
75
|
-
@_content
|
76
|
-
end
|
77
|
-
|
78
|
-
# Return my parent element.
|
79
|
-
def parent
|
80
|
-
@_parent
|
81
|
-
end
|
82
|
-
|
83
|
-
# Return the ultimate parent.
|
84
|
-
def root
|
85
|
-
@_parent ? self : @_parent.root
|
86
|
-
end
|
87
|
-
|
88
|
-
# Return true if I have any children.
|
89
|
-
def has_children?
|
90
|
-
children.size > 0
|
91
|
-
end
|
92
|
-
|
93
|
-
# Breadth-first iterator, required by Enumerable.
|
94
|
-
def each(&block)
|
95
|
-
block.call(self)
|
96
|
-
children.each { |ch| ch.each(&block) }
|
97
|
-
end
|
98
|
-
|
99
|
-
# Print out to $stdout (or given IO or String)
|
100
|
-
# a formatted dump of my structure.
|
101
|
-
def dump(indent=0, io=$stdout)
|
102
|
-
io << " " * indent
|
103
|
-
io << self.to_s
|
104
|
-
io << "\n"
|
105
|
-
children.each { |ea| ea.dump(indent+1, io) }
|
106
|
-
end
|
107
|
-
|
108
|
-
end
|
109
|
-
|
110
|
-
# This is a Element that represents the whole document (and makes a
|
111
|
-
# scope for the DTD declaration)
|
112
|
-
class Document
|
113
|
-
include TreeElement
|
114
|
-
|
115
|
-
def initialize
|
116
|
-
initialize_tree_element(nil, [])
|
117
|
-
end
|
118
|
-
|
119
|
-
def to_s
|
120
|
-
''
|
121
|
-
end
|
122
|
-
|
123
|
-
def each(&block)
|
124
|
-
children.each { |ch| ch.each(&block) }
|
125
|
-
end
|
126
|
-
|
127
|
-
def write(io)
|
128
|
-
children.each { |t| t.write(io) }
|
129
|
-
end
|
130
|
-
|
131
|
-
def tag
|
132
|
-
''
|
133
|
-
end
|
134
|
-
|
135
|
-
# Return my child <html> node, if any.
|
136
|
-
def html_node
|
137
|
-
children.detect { |ea| ea.tag == 'html' }
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
# This is a TreeElement that represents tagged items in an HTML
|
142
|
-
# document.
|
143
|
-
class Element
|
144
|
-
include TreeElement
|
145
|
-
|
146
|
-
protected
|
147
|
-
|
148
|
-
# parent_or_nil:: TreeElement or nil
|
149
|
-
# tag_name:: String
|
150
|
-
def initialize(parent_or_nil = nil, tag_name = nil)
|
151
|
-
initialize_tree_element(parent_or_nil, [])
|
152
|
-
@_tag = tag_name
|
153
|
-
@_attributes = {}
|
154
|
-
@_attribute_order = []
|
155
|
-
end
|
156
|
-
|
157
|
-
public
|
158
|
-
|
159
|
-
def can_have_children?; true; end
|
160
|
-
|
161
|
-
# Return true if I'm data instead of a tag
|
162
|
-
def data?; false; end
|
163
|
-
|
164
|
-
def to_s
|
165
|
-
a = [ "<", tag ]
|
166
|
-
@_attribute_order.each { |k|
|
167
|
-
v = @_attributes[k]
|
168
|
-
a << " #{k.to_s}=\"#{v.to_s}\""
|
169
|
-
}
|
170
|
-
a << ">"
|
171
|
-
a.join('')
|
172
|
-
end
|
173
|
-
|
174
|
-
# Append an attribute. <tt>values</tt> are first flattened into an Array,
|
175
|
-
# then converted into strings.
|
176
|
-
#
|
177
|
-
# If there is a single attribute value, it will appear as a String,
|
178
|
-
# otherwise it will be an Array of Strings.
|
179
|
-
#
|
180
|
-
# Example:
|
181
|
-
# element.add_attribute("width", "123")
|
182
|
-
# element.add_attribute("value", [ "a", "b" ])
|
183
|
-
def add_attribute(name, *values)
|
184
|
-
values = values.flatten.collect { |ea| ea.to_s.strip }
|
185
|
-
name = name.downcase
|
186
|
-
if @_attributes.include?(name)
|
187
|
-
@_attributes[name] = @_attributes[name].to_a + values
|
188
|
-
else
|
189
|
-
@_attributes[name] = values.size > 1 ? values : values[0]
|
190
|
-
end
|
191
|
-
@_attribute_order << name
|
192
|
-
self
|
193
|
-
end
|
194
|
-
|
195
|
-
# Return my tag (should be a String)
|
196
|
-
def tag; @_tag; end
|
197
|
-
|
198
|
-
# Return an HTML::Tag for further information, or nil if this is an
|
199
|
-
# unknown tag.
|
200
|
-
def tag_info
|
201
|
-
begin
|
202
|
-
HTML::Tag.named(@_tag)
|
203
|
-
rescue NoSuchHTMLTagError
|
204
|
-
nil
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
|
-
# Return my attributes Hash.
|
209
|
-
def attributes; @_attributes; end
|
210
|
-
|
211
|
-
# Return the order of my attributes
|
212
|
-
def attribute_order; @_attribute_order; end
|
213
|
-
|
214
|
-
# Return the value of a single attribute (a String or Array).
|
215
|
-
def attribute(name); @_attributes[name]; end
|
216
|
-
|
217
|
-
# Return the value of a single attribute (a String or Array).
|
218
|
-
def [](name); attribute(name); end
|
219
|
-
|
220
|
-
# Replace an attribute.
|
221
|
-
def []=(name, *values)
|
222
|
-
@_attributes[name] = values.size > 1 ? values : values[0]
|
223
|
-
@_attribute_order.delete(name)
|
224
|
-
self
|
225
|
-
end
|
226
|
-
|
227
|
-
# Print me (and my descendents) on the given IO stream.
|
228
|
-
def write(io)
|
229
|
-
io << self
|
230
|
-
children.each { |t| t.write(io) }
|
231
|
-
unless tag_info.is_empty_element
|
232
|
-
io.puts( "</#{tag()}>" )
|
233
|
-
end
|
234
|
-
end
|
235
|
-
|
236
|
-
end
|
237
|
-
|
238
|
-
# This is a TreeElement that represents leaf data nodes (CDATA, scripts,
|
239
|
-
# comments, processing directives). It forwards unknown messages to the
|
240
|
-
# content element, so it otherwise behaves like a String.
|
241
|
-
class Data
|
242
|
-
include TreeElement
|
243
|
-
|
244
|
-
protected
|
245
|
-
|
246
|
-
# parent_or_nil:: parent, TreeElement or nil
|
247
|
-
# str:: contents, String
|
248
|
-
def initialize(parent_or_nil = nil, str = '')
|
249
|
-
initialize_tree_element(parent_or_nil, str)
|
250
|
-
end
|
251
|
-
|
252
|
-
public
|
253
|
-
|
254
|
-
# Return true because I am a data Element.
|
255
|
-
def data?; true; end
|
256
|
-
|
257
|
-
# Return false because I have no children.
|
258
|
-
def can_have_children?; false; end
|
259
|
-
|
260
|
-
# Return an empty collection because I have no children.
|
261
|
-
def children; []; end
|
262
|
-
|
263
|
-
# Return my (empty) tag String.
|
264
|
-
def tag; ''; end
|
265
|
-
|
266
|
-
# Return my (empty) attributes Hash.
|
267
|
-
def attributes; {}; end
|
268
|
-
|
269
|
-
def to_s
|
270
|
-
@_content
|
271
|
-
end
|
272
|
-
|
273
|
-
# Print me on the given IO stream.
|
274
|
-
def write(io)
|
275
|
-
io << self
|
276
|
-
end
|
277
|
-
|
278
|
-
# Forward all other methods to my content, so I can otherwise behave
|
279
|
-
# like a String.
|
280
|
-
def method_missing(sym, *args)
|
281
|
-
@_content.method(sym).call(*args)
|
282
|
-
end
|
283
|
-
end
|
284
|
-
|
285
|
-
class Comment < Data
|
286
|
-
def to_s
|
287
|
-
'<!--' + @_content + '-->'
|
288
|
-
end
|
289
|
-
end
|
290
|
-
|
291
|
-
class Special < Data
|
292
|
-
def to_s
|
293
|
-
'<' + @_content + '>'
|
294
|
-
end
|
295
|
-
end
|
296
|
-
end
|
@@ -1,276 +0,0 @@
|
|
1
|
-
# Copyright:: Copyright(C) 2002 Ned Konz
|
2
|
-
# License:: Ruby's License
|
3
|
-
# CVS ID:: $Id: stparser.rb,v 1.6 2002/06/04 01:55:59 ned Exp $
|
4
|
-
|
5
|
-
require 'web/htmlparser/sgml-parser'
|
6
|
-
require 'web/htmltools/tags'
|
7
|
-
|
8
|
-
# This is an SGMLParser subclass that knows about HTML 4.0 rules
|
9
|
-
# and can spot empty tags and deal with tags that may have omitted endtags.
|
10
|
-
module HTML #:nodoc: all
|
11
|
-
class StackingParser < SGMLParser
|
12
|
-
# accessors
|
13
|
-
|
14
|
-
def stack; @tagStack; end
|
15
|
-
|
16
|
-
def last_tag; @tagStack[-1] || 'html'; end
|
17
|
-
|
18
|
-
def parent_tag; @tagStack[-2] || 'html'; end
|
19
|
-
|
20
|
-
def strip_whitespace=(flag); @stripWhitespace = flag; end
|
21
|
-
|
22
|
-
# input methods
|
23
|
-
|
24
|
-
# Open and parse the given file.
|
25
|
-
def parse_file_named(name)
|
26
|
-
File.open(name) { |f|
|
27
|
-
while bytes = f.read(65536)
|
28
|
-
feed(bytes)
|
29
|
-
end
|
30
|
-
}
|
31
|
-
end
|
32
|
-
|
33
|
-
# Feed some more data to the parser.
|
34
|
-
def feed(string)
|
35
|
-
super
|
36
|
-
while @saved.size > 0
|
37
|
-
saved = @saved
|
38
|
-
@saved = ''
|
39
|
-
super(saved)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
# available only to subclasses
|
44
|
-
private
|
45
|
-
|
46
|
-
if $DEBUG
|
47
|
-
def dprint(*stuff)
|
48
|
-
print((" " * @tagStack.size), stuff) if @verbose
|
49
|
-
end
|
50
|
-
else
|
51
|
-
def dprint(*stuff); end
|
52
|
-
end
|
53
|
-
|
54
|
-
def warn(msg)
|
55
|
-
$stderr.print(msg) if @verbose
|
56
|
-
end
|
57
|
-
|
58
|
-
def initialize(verbose=false, strip_white=false)
|
59
|
-
super(verbose)
|
60
|
-
@tagStack = []
|
61
|
-
@saved = ''
|
62
|
-
@stripWhitespace = strip_white
|
63
|
-
end
|
64
|
-
|
65
|
-
# handle_data will call this.
|
66
|
-
def skip_script(data)
|
67
|
-
# is the end of the script in this buffer?
|
68
|
-
if m = data.index(%r{</[A-Za-z]})
|
69
|
-
@nomoretags = false
|
70
|
-
@saved = data[m..-1]
|
71
|
-
handle_script(data[0,m]) # call user handler
|
72
|
-
else
|
73
|
-
handle_script(data)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
# Unfortunately, sgml-parser calls this and there's important work to do in
|
78
|
-
# it. So the user handler has to be named something different.
|
79
|
-
def handle_data(data)
|
80
|
-
# need to handle scripts
|
81
|
-
if last_tag() == 'script' && @nomoretags
|
82
|
-
skip_script(data)
|
83
|
-
else
|
84
|
-
if @stripWhitespace
|
85
|
-
begin
|
86
|
-
data.strip! if HTML::Tag.named(last_tag()).can_ignore_whitespace
|
87
|
-
rescue NoSuchHTMLTagError
|
88
|
-
data.strip!
|
89
|
-
end
|
90
|
-
end
|
91
|
-
handle_cdata(data) if data.size > 0 # call user handler
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
def finish_starttag(tag, attrs)
|
96
|
-
dprint "*START* #{tag} #{attrs.inspect}\n"
|
97
|
-
# dprint "-START- #{tag}\n"
|
98
|
-
begin
|
99
|
-
unless HTML::Tag.named(last_tag()).can_contain(tag, parent_tag())
|
100
|
-
dprint "-INSERT-\n"
|
101
|
-
finish_endtag(last_tag())
|
102
|
-
end
|
103
|
-
rescue NoSuchHTMLTagError
|
104
|
-
# hmm.. last_tag was unknown.
|
105
|
-
# Assume it doesn't have an optional endtag.
|
106
|
-
end
|
107
|
-
|
108
|
-
push(tag)
|
109
|
-
|
110
|
-
begin
|
111
|
-
if HTML::Tag.named(tag).is_empty_element
|
112
|
-
dprint "-EMPTY-\n"
|
113
|
-
handle_empty_tag(tag, attrs) # call user handler
|
114
|
-
drop_to_tag(tag)
|
115
|
-
else
|
116
|
-
handle_start_tag(tag, attrs) # call user handler
|
117
|
-
end
|
118
|
-
|
119
|
-
if tag.downcase == 'script'
|
120
|
-
@nomoretags = true
|
121
|
-
end
|
122
|
-
rescue NoSuchHTMLTagError
|
123
|
-
# hmm... the start tag is unknown.
|
124
|
-
# And we pushed it.
|
125
|
-
# If it's empty, we'll get rid of it at the next end tag.
|
126
|
-
handle_unknown_tag(tag, attrs)
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
# return true if tag is not extra
|
131
|
-
def drop_to_tag(tag)
|
132
|
-
dropped = @tagStack.size - (@tagStack.rindex(tag.downcase) || @tagStack.size)
|
133
|
-
if dropped == 0 # got an end tag but we haven't seen start tag?
|
134
|
-
handle_extra_end_tag(tag) # call user handler
|
135
|
-
return false
|
136
|
-
end
|
137
|
-
dropped.times do
|
138
|
-
begin
|
139
|
-
# detect missing end tag
|
140
|
-
if last_tag != tag and ! HTML::Tag.named(last_tag).can_omit_end_tag
|
141
|
-
handle_missing_end_tag(last_tag) # call user handler
|
142
|
-
end
|
143
|
-
rescue NoSuchHTMLTagError
|
144
|
-
# oops, don't recognize last_tag.
|
145
|
-
end
|
146
|
-
pop
|
147
|
-
end
|
148
|
-
return true
|
149
|
-
end
|
150
|
-
|
151
|
-
def finish_endtag(tag)
|
152
|
-
dprint "*END* #{tag}\n"
|
153
|
-
if drop_to_tag(tag)
|
154
|
-
dprint "-END- #{tag} #{@tagStack.inspect}\n"
|
155
|
-
handle_end_tag(tag) # call user handler
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
def push(tag)
|
160
|
-
@tagStack.push(tag.downcase)
|
161
|
-
dprint "*PUSH* #{tag} => #{@tagStack.inspect}\n"
|
162
|
-
end
|
163
|
-
|
164
|
-
def pop
|
165
|
-
tag = @tagStack.pop
|
166
|
-
dprint "*POP* #{tag} => #{@tagStack.inspect}\n"
|
167
|
-
tag
|
168
|
-
end
|
169
|
-
|
170
|
-
def unknown_charref(name)
|
171
|
-
handle_unknown_character(name)
|
172
|
-
end
|
173
|
-
|
174
|
-
def unknown_entityref(name)
|
175
|
-
handle_unknown_entity(name)
|
176
|
-
end
|
177
|
-
|
178
|
-
# callbacks: can be overridden in subclasses
|
179
|
-
|
180
|
-
def handle_start_tag(tag, attrs)
|
181
|
-
end
|
182
|
-
|
183
|
-
def handle_end_tag(tag)
|
184
|
-
end
|
185
|
-
|
186
|
-
# by default, an empty tag is handled as a start tag
|
187
|
-
# with an inserted end tag.
|
188
|
-
def handle_empty_tag(tag, attrs)
|
189
|
-
handle_start_tag(tag, attrs)
|
190
|
-
handle_end_tag(tag)
|
191
|
-
end
|
192
|
-
|
193
|
-
def handle_unknown_tag(tag, attrs)
|
194
|
-
warn("warning: unknown tag #{tag}\n")
|
195
|
-
end
|
196
|
-
|
197
|
-
def handle_missing_end_tag(tag)
|
198
|
-
warn("warning: missing end tag </#{tag}>\n")
|
199
|
-
end
|
200
|
-
|
201
|
-
def handle_extra_end_tag(tag)
|
202
|
-
warn("warning: extra end tag </#{tag}>\n")
|
203
|
-
end
|
204
|
-
|
205
|
-
def handle_cdata(data)
|
206
|
-
end
|
207
|
-
|
208
|
-
def handle_script(data)
|
209
|
-
end
|
210
|
-
|
211
|
-
def handle_unknown_character(name)
|
212
|
-
end
|
213
|
-
|
214
|
-
def handle_unknown_entity(name)
|
215
|
-
end
|
216
|
-
|
217
|
-
# call super if you want the data stripped
|
218
|
-
def handle_comment(data)
|
219
|
-
data.strip! if @stripWhitespace
|
220
|
-
end
|
221
|
-
|
222
|
-
def handle_special(data)
|
223
|
-
end
|
224
|
-
|
225
|
-
end
|
226
|
-
end
|
227
|
-
|
228
|
-
# test script
|
229
|
-
if $0 == __FILE__
|
230
|
-
$stdout.sync = true
|
231
|
-
|
232
|
-
class TestStackingParser < HTML::StackingParser
|
233
|
-
def dump_stack
|
234
|
-
stack.each { |ea| print ea, '/' }
|
235
|
-
end
|
236
|
-
def handle_start_tag(tag, attrs)
|
237
|
-
print("START: #{tag} #{attrs.inspect}\n")
|
238
|
-
end
|
239
|
-
def handle_end_tag(tag)
|
240
|
-
# print("END: #{tag}\n")
|
241
|
-
end
|
242
|
-
def handle_empty_tag(tag, attrs)
|
243
|
-
# print("EMPTY: #{tag} #{attrs.inspect}\n")
|
244
|
-
end
|
245
|
-
def handle_cdata(data)
|
246
|
-
# print("DATA: #{data.size} chars\n")
|
247
|
-
if last_tag() != 'style'
|
248
|
-
str = data.strip
|
249
|
-
if str.size > 0
|
250
|
-
dump_stack
|
251
|
-
print(str.inspect, "\n")
|
252
|
-
end
|
253
|
-
end
|
254
|
-
end
|
255
|
-
def handle_script(data)
|
256
|
-
# print("SCRIPT: #{data.size} chars\n")
|
257
|
-
end
|
258
|
-
def handle_unknown_character(name)
|
259
|
-
print("UNKC: #{name}\n")
|
260
|
-
end
|
261
|
-
def handle_unknown_entity(name)
|
262
|
-
print("UNKE: #{name}\n")
|
263
|
-
end
|
264
|
-
def handle_comment(data)
|
265
|
-
super
|
266
|
-
print("COMMENT: #{data}\n")
|
267
|
-
end
|
268
|
-
def handle_special(data)
|
269
|
-
print("SPECIAL: #{data}\n")
|
270
|
-
end
|
271
|
-
end
|
272
|
-
|
273
|
-
$DEBUG = false
|
274
|
-
p = TestStackingParser.new(true)
|
275
|
-
p.parse_file_named(ARGV[0] || 'ebay.html')
|
276
|
-
end
|