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,429 +0,0 @@
|
|
1
|
-
# HTML parser
|
2
|
-
|
3
|
-
require 'sgml-parser'
|
4
|
-
|
5
|
-
class HTMLParser < SGMLParser
|
6
|
-
|
7
|
-
def initialize(formatter, verbose=nil)
|
8
|
-
super(verbose)
|
9
|
-
@formatter = formatter
|
10
|
-
@savedata = nil
|
11
|
-
@isindex = 0
|
12
|
-
@title = nil
|
13
|
-
@base = nil
|
14
|
-
@anchor = nil
|
15
|
-
@anchorlist = []
|
16
|
-
@nofill = 0
|
17
|
-
@list_stack = []
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
def handle_data(data)
|
22
|
-
if @savedata
|
23
|
-
@savedata = @savedata + data
|
24
|
-
else
|
25
|
-
if @nofill != 0
|
26
|
-
@formatter.add_literal_data(data)
|
27
|
-
else
|
28
|
-
@formatter.add_flowing_data(data)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def save_bgn
|
34
|
-
@savedata = ''
|
35
|
-
end
|
36
|
-
|
37
|
-
def save_end
|
38
|
-
data = @savedata
|
39
|
-
@savedata = nil
|
40
|
-
data = '' if data == nil
|
41
|
-
if @nofill == 0
|
42
|
-
data = data.split.join(" ")
|
43
|
-
end
|
44
|
-
return data
|
45
|
-
end
|
46
|
-
|
47
|
-
def anchor_bgn(href, name, type)
|
48
|
-
@anchor = href
|
49
|
-
if @anchor
|
50
|
-
@anchorlist << href
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def anchor_end
|
55
|
-
if @anchor
|
56
|
-
#handle_data(format "[%d]", @anchorlist.length)
|
57
|
-
@anchor = nil
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def handle_image(src, alt, *args)
|
62
|
-
handle_data(alt)
|
63
|
-
end
|
64
|
-
|
65
|
-
def start_html(attrs) end
|
66
|
-
def end_html() end
|
67
|
-
|
68
|
-
def start_head(attrs) end
|
69
|
-
def end_head() end
|
70
|
-
|
71
|
-
def start_body(attrs) end
|
72
|
-
def end_body() end
|
73
|
-
|
74
|
-
def start_title(attrs)
|
75
|
-
save_bgn
|
76
|
-
end
|
77
|
-
|
78
|
-
def end_title
|
79
|
-
@title = save_end
|
80
|
-
end
|
81
|
-
|
82
|
-
def do_base(attrs)
|
83
|
-
for a, v in attrs
|
84
|
-
if a == 'href'
|
85
|
-
@base = v
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def do_isindex(attrs)
|
91
|
-
@isindex = 1
|
92
|
-
end
|
93
|
-
|
94
|
-
def do_link(attrs)
|
95
|
-
end
|
96
|
-
|
97
|
-
def do_meta(attrs)
|
98
|
-
end
|
99
|
-
|
100
|
-
def do_nextid(attrs) # Deprecated
|
101
|
-
end
|
102
|
-
|
103
|
-
|
104
|
-
def start_h1(attrs)
|
105
|
-
@formatter.end_paragraph(1)
|
106
|
-
@formatter.push_font('h1', 0, 1, 0)
|
107
|
-
end
|
108
|
-
|
109
|
-
def end_h1
|
110
|
-
@formatter.end_paragraph(1)
|
111
|
-
@formatter.pop_font()
|
112
|
-
end
|
113
|
-
|
114
|
-
def start_h2(attrs)
|
115
|
-
@formatter.end_paragraph(1)
|
116
|
-
@formatter.push_font('h2', 0, 1, 0)
|
117
|
-
end
|
118
|
-
|
119
|
-
def end_h2
|
120
|
-
@formatter.end_paragraph(1)
|
121
|
-
@formatter.pop_font()
|
122
|
-
end
|
123
|
-
|
124
|
-
def start_h3(attrs)
|
125
|
-
@formatter.end_paragraph(1)
|
126
|
-
@formatter.push_font('h3', 0, 1, 0)
|
127
|
-
end
|
128
|
-
|
129
|
-
def end_h3
|
130
|
-
@formatter.end_paragraph(1)
|
131
|
-
@formatter.pop_font()
|
132
|
-
end
|
133
|
-
|
134
|
-
def start_h4(attrs)
|
135
|
-
@formatter.end_paragraph(1)
|
136
|
-
@formatter.push_font('h4', 0, 1, 0)
|
137
|
-
end
|
138
|
-
|
139
|
-
def end_h4
|
140
|
-
@formatter.end_paragraph(1)
|
141
|
-
@formatter.pop_font()
|
142
|
-
end
|
143
|
-
|
144
|
-
def start_h5(attrs)
|
145
|
-
@formatter.end_paragraph(1)
|
146
|
-
@formatter.push_font('h5', 0, 1, 0)
|
147
|
-
end
|
148
|
-
|
149
|
-
def end_h5
|
150
|
-
@formatter.end_paragraph(1)
|
151
|
-
@formatter.pop_font()
|
152
|
-
end
|
153
|
-
|
154
|
-
def start_h6(attrs)
|
155
|
-
@formatter.end_paragraph(1)
|
156
|
-
@formatter.push_font('h6', 0, 1, 0)
|
157
|
-
end
|
158
|
-
|
159
|
-
def end_h6
|
160
|
-
@formatter.end_paragraph(1)
|
161
|
-
@formatter.pop_font()
|
162
|
-
end
|
163
|
-
|
164
|
-
def do_p(attrs)
|
165
|
-
@formatter.end_paragraph(1)
|
166
|
-
end
|
167
|
-
|
168
|
-
def start_pre(attrs)
|
169
|
-
@formatter.end_paragraph(1)
|
170
|
-
@formatter.push_font(nil, nil, nil, 1)
|
171
|
-
@nofill = @nofill + 1
|
172
|
-
end
|
173
|
-
|
174
|
-
def end_pre
|
175
|
-
@formatter.end_paragraph(1)
|
176
|
-
@formatter.pop_font()
|
177
|
-
@nofill = @nofill - 1
|
178
|
-
if @nofill < 0 then @nofill = 0 end
|
179
|
-
end
|
180
|
-
|
181
|
-
def start_xmp(attrs)
|
182
|
-
start_pre(attrs)
|
183
|
-
setliteral('xmp') # Tell SGML parser
|
184
|
-
end
|
185
|
-
|
186
|
-
def end_xmp
|
187
|
-
end_pre
|
188
|
-
end
|
189
|
-
|
190
|
-
def start_listing(attrs)
|
191
|
-
start_pre(attrs)
|
192
|
-
setliteral('listing') # Tell SGML parser
|
193
|
-
end
|
194
|
-
|
195
|
-
def end_listing
|
196
|
-
end_pre
|
197
|
-
end
|
198
|
-
|
199
|
-
def start_address(attrs)
|
200
|
-
@formatter.end_paragraph(0)
|
201
|
-
@formatter.push_font(nil, 1, nil, nil)
|
202
|
-
end
|
203
|
-
|
204
|
-
def end_address
|
205
|
-
@formatter.end_paragraph(0)
|
206
|
-
@formatter.pop_font()
|
207
|
-
end
|
208
|
-
|
209
|
-
def start_blockquote(attrs)
|
210
|
-
@formatter.end_paragraph(1)
|
211
|
-
@formatter.push_margin('blockquote')
|
212
|
-
end
|
213
|
-
|
214
|
-
def end_blockquote
|
215
|
-
@formatter.end_paragraph(1)
|
216
|
-
@formatter.pop_margin()
|
217
|
-
end
|
218
|
-
|
219
|
-
def start_ul(attrs)
|
220
|
-
@formatter.end_paragraph(0)
|
221
|
-
@formatter.push_margin('ul')
|
222
|
-
@list_stack << ['ul', '*', 0]
|
223
|
-
end
|
224
|
-
|
225
|
-
def end_ul
|
226
|
-
if @list_stack
|
227
|
-
@list_stack.pop
|
228
|
-
end
|
229
|
-
@formatter.end_paragraph(0)
|
230
|
-
@formatter.pop_margin
|
231
|
-
end
|
232
|
-
|
233
|
-
def do_li(attrs)
|
234
|
-
@formatter.end_paragraph(0)
|
235
|
-
if @list_stack && @list_stack.size > 0
|
236
|
-
dummy, label, counter = top = @list_stack[-1]
|
237
|
-
top[2] = counter = counter+1
|
238
|
-
else
|
239
|
-
label, counter = '*', 0
|
240
|
-
end
|
241
|
-
@formatter.add_label_data(label, counter)
|
242
|
-
end
|
243
|
-
|
244
|
-
def start_ol(attrs)
|
245
|
-
@formatter.end_paragraph(0)
|
246
|
-
@formatter.push_margin('ol')
|
247
|
-
label = '1.'
|
248
|
-
for a, v in attrs
|
249
|
-
if a == 'type'
|
250
|
-
if v.length == 1
|
251
|
-
v = v + '.'
|
252
|
-
label = v
|
253
|
-
end
|
254
|
-
end
|
255
|
-
end
|
256
|
-
@list_stack << ['ol', label, 0]
|
257
|
-
end
|
258
|
-
|
259
|
-
def end_ol
|
260
|
-
if @list_stack
|
261
|
-
@list_stack.pop
|
262
|
-
end
|
263
|
-
@formatter.end_paragraph(0)
|
264
|
-
@formatter.pop_margin
|
265
|
-
end
|
266
|
-
|
267
|
-
def start_menu(attrs)
|
268
|
-
start_ul(attrs)
|
269
|
-
end
|
270
|
-
|
271
|
-
def end_menu
|
272
|
-
end_ul
|
273
|
-
end
|
274
|
-
|
275
|
-
def start_dir(attrs)
|
276
|
-
start_ul(attrs)
|
277
|
-
end
|
278
|
-
|
279
|
-
def end_dir
|
280
|
-
end_ul
|
281
|
-
end
|
282
|
-
|
283
|
-
def start_dl(attrs)
|
284
|
-
@formatter.end_paragraph(1)
|
285
|
-
@list_stack << ['dl', '', 0]
|
286
|
-
end
|
287
|
-
|
288
|
-
def end_dl
|
289
|
-
ddpop(1)
|
290
|
-
if @list_stack.length > 0
|
291
|
-
@list_stack.pop
|
292
|
-
end
|
293
|
-
end
|
294
|
-
|
295
|
-
def do_dt(attrs)
|
296
|
-
ddpop
|
297
|
-
end
|
298
|
-
|
299
|
-
def do_dd(attrs)
|
300
|
-
ddpop
|
301
|
-
@formatter.push_margin('dd')
|
302
|
-
@list_stack << ['dd', '', 0]
|
303
|
-
end
|
304
|
-
|
305
|
-
def ddpop(bl=0)
|
306
|
-
@formatter.end_paragraph(bl)
|
307
|
-
if @list_stack.length > 0
|
308
|
-
if @list_stack[-1][0] == 'dd'
|
309
|
-
@list_stack.pop
|
310
|
-
@formatter.pop_margin
|
311
|
-
end
|
312
|
-
end
|
313
|
-
end
|
314
|
-
|
315
|
-
def start_cite(attrs) start_i(attrs) end
|
316
|
-
def end_cite() end_i end
|
317
|
-
|
318
|
-
def start_code(attrs) start_tt(attrs) end
|
319
|
-
def end_code() end_tt end
|
320
|
-
|
321
|
-
def start_em(attrs) start_i(attrs) end
|
322
|
-
def end_em() end_i end
|
323
|
-
|
324
|
-
def start_kbd(attrs) start_tt(attrs) end
|
325
|
-
def end_kbd() end_tt end
|
326
|
-
|
327
|
-
def start_samp(attrs) start_tt(attrs) end
|
328
|
-
def end_samp() end_tt end
|
329
|
-
|
330
|
-
def start_strong(attrs) start_b(attrs) end
|
331
|
-
def end_strong() end_b end
|
332
|
-
|
333
|
-
def start_var(attrs) start_i(attrs) end
|
334
|
-
def end_var() end_i end
|
335
|
-
|
336
|
-
def start_i(attrs)
|
337
|
-
@formatter.push_font(nil, 1, nil, nil)
|
338
|
-
end
|
339
|
-
def end_i
|
340
|
-
@formatter.pop_font
|
341
|
-
end
|
342
|
-
|
343
|
-
def start_b(attrs)
|
344
|
-
@formatter.push_font(nil, nil, 1, nil)
|
345
|
-
end
|
346
|
-
def end_b
|
347
|
-
@formatter.pop_font
|
348
|
-
end
|
349
|
-
|
350
|
-
def start_tt(attrs)
|
351
|
-
@formatter.push_font(nil, nil, nil, 1)
|
352
|
-
end
|
353
|
-
def end_tt
|
354
|
-
@formatter.pop_font
|
355
|
-
end
|
356
|
-
|
357
|
-
def start_a(attrs)
|
358
|
-
href = nil
|
359
|
-
name = nil
|
360
|
-
type = nil
|
361
|
-
for attrname, value in attrs
|
362
|
-
value = value.strip
|
363
|
-
if attrname == 'href'
|
364
|
-
href = value
|
365
|
-
end
|
366
|
-
if attrname == 'name'
|
367
|
-
name = value
|
368
|
-
end
|
369
|
-
if attrname == 'type'
|
370
|
-
type = value.downcase
|
371
|
-
end
|
372
|
-
end
|
373
|
-
anchor_bgn(href, name, type)
|
374
|
-
end
|
375
|
-
|
376
|
-
def end_a
|
377
|
-
anchor_end
|
378
|
-
end
|
379
|
-
|
380
|
-
def do_br(attrs)
|
381
|
-
@formatter.add_line_break
|
382
|
-
end
|
383
|
-
|
384
|
-
def do_hr(attrs)
|
385
|
-
@formatter.add_hor_rule
|
386
|
-
end
|
387
|
-
|
388
|
-
def do_img(attrs)
|
389
|
-
align = nil
|
390
|
-
alt = '(image)'
|
391
|
-
ismap = nil
|
392
|
-
src = nil
|
393
|
-
width = 0
|
394
|
-
height = 0
|
395
|
-
for attrname, value in attrs
|
396
|
-
if attrname == 'align'
|
397
|
-
align = value
|
398
|
-
end
|
399
|
-
if attrname == 'alt'
|
400
|
-
alt = value
|
401
|
-
end
|
402
|
-
if attrname == 'ismap'
|
403
|
-
ismap = value
|
404
|
-
end
|
405
|
-
if attrname == 'src'
|
406
|
-
src = value
|
407
|
-
end
|
408
|
-
if attrname == 'width'
|
409
|
-
width = Integer(value)
|
410
|
-
end
|
411
|
-
if attrname == 'height'
|
412
|
-
height = Integer(value)
|
413
|
-
end
|
414
|
-
end
|
415
|
-
handle_image(src, alt, ismap, align, width, height)
|
416
|
-
end
|
417
|
-
|
418
|
-
def do_plaintext(attrs)
|
419
|
-
start_pre(attrs)
|
420
|
-
setnomoretags # Tell SGML parser
|
421
|
-
end
|
422
|
-
|
423
|
-
def unknown_starttag(tag, attrs)
|
424
|
-
end
|
425
|
-
|
426
|
-
def unknown_endtag(tag)
|
427
|
-
end
|
428
|
-
|
429
|
-
end
|
@@ -1,332 +0,0 @@
|
|
1
|
-
# A parser for SGML, using the derived class as static DTD.
|
2
|
-
|
3
|
-
class SGMLParser
|
4
|
-
|
5
|
-
# Regular expressions used for parsing:
|
6
|
-
Interesting = /[&<]/
|
7
|
-
Incomplete = Regexp.compile('&([a-zA-Z][a-zA-Z0-9]*|#[0-9]*)?|' +
|
8
|
-
'<([a-zA-Z][^<>]*|/([a-zA-Z][^<>]*)?|' +
|
9
|
-
'![^<>]*)?')
|
10
|
-
|
11
|
-
Entityref = /&([a-zA-Z][-.a-zA-Z0-9]*)[^-.a-zA-Z0-9]/
|
12
|
-
Charref = /&#([0-9]+)[^0-9]/
|
13
|
-
|
14
|
-
Starttagopen = /<[>a-zA-Z]/
|
15
|
-
Endtagopen = /<\/[<>a-zA-Z]/
|
16
|
-
Endbracket = /[<>]/
|
17
|
-
Special = /<![^<>]*>/
|
18
|
-
Commentopen = /<!--/
|
19
|
-
Commentclose = /--[ \t\n]*>/
|
20
|
-
Tagfind = /[a-zA-Z][a-zA-Z0-9.-]*/
|
21
|
-
Attrfind = Regexp.compile('[\s,]*([a-zA-Z_][a-zA-Z_0-9.-]*)' +
|
22
|
-
'(\s*=\s*' +
|
23
|
-
"('[^']*'" +
|
24
|
-
'|"[^"]*"' +
|
25
|
-
'|[-~a-zA-Z0-9,./:+*%?!()_#=]*))?')
|
26
|
-
|
27
|
-
Entitydefs =
|
28
|
-
{'lt'=>'<', 'gt'=>'>', 'amp'=>'&', 'quot'=>'"', 'apos'=>'\''}
|
29
|
-
|
30
|
-
def initialize(verbose=false)
|
31
|
-
@verbose = verbose
|
32
|
-
reset
|
33
|
-
end
|
34
|
-
|
35
|
-
def reset
|
36
|
-
@rawdata = ''
|
37
|
-
@stack = []
|
38
|
-
@lasttag = '???'
|
39
|
-
@nomoretags = false
|
40
|
-
@literal = false
|
41
|
-
end
|
42
|
-
|
43
|
-
def has_context(gi)
|
44
|
-
@stack.include? gi
|
45
|
-
end
|
46
|
-
|
47
|
-
def setnomoretags
|
48
|
-
@nomoretags = true
|
49
|
-
@literal = true
|
50
|
-
end
|
51
|
-
|
52
|
-
def setliteral(*args)
|
53
|
-
@literal = true
|
54
|
-
end
|
55
|
-
|
56
|
-
def feed(data)
|
57
|
-
@rawdata << data
|
58
|
-
goahead(false)
|
59
|
-
end
|
60
|
-
|
61
|
-
def close
|
62
|
-
goahead(true)
|
63
|
-
end
|
64
|
-
|
65
|
-
def goahead(_end)
|
66
|
-
rawdata = @rawdata
|
67
|
-
i = 0
|
68
|
-
n = rawdata.length
|
69
|
-
while i < n
|
70
|
-
if @nomoretags
|
71
|
-
handle_data(rawdata[i..(n-1)])
|
72
|
-
i = n
|
73
|
-
break
|
74
|
-
end
|
75
|
-
j = rawdata.index(Interesting, i)
|
76
|
-
j = n unless j
|
77
|
-
if i < j
|
78
|
-
handle_data(rawdata[i..(j-1)])
|
79
|
-
end
|
80
|
-
i = j
|
81
|
-
break if (i == n)
|
82
|
-
if rawdata[i] == ?< #
|
83
|
-
if rawdata.index(Starttagopen, i) == i
|
84
|
-
if @literal
|
85
|
-
handle_data(rawdata[i, 1])
|
86
|
-
i += 1
|
87
|
-
next
|
88
|
-
end
|
89
|
-
k = parse_starttag(i)
|
90
|
-
break unless k
|
91
|
-
i = k
|
92
|
-
next
|
93
|
-
end
|
94
|
-
if rawdata.index(Endtagopen, i) == i
|
95
|
-
k = parse_endtag(i)
|
96
|
-
break unless k
|
97
|
-
i = k
|
98
|
-
@literal = false
|
99
|
-
next
|
100
|
-
end
|
101
|
-
if rawdata.index(Commentopen, i) == i
|
102
|
-
if @literal
|
103
|
-
handle_data(rawdata[i,1])
|
104
|
-
i += 1
|
105
|
-
next
|
106
|
-
end
|
107
|
-
k = parse_comment(i)
|
108
|
-
break unless k
|
109
|
-
i += k
|
110
|
-
next
|
111
|
-
end
|
112
|
-
if rawdata.index(Special, i) == i
|
113
|
-
if @literal
|
114
|
-
handle_data(rawdata[i, 1])
|
115
|
-
i += 1
|
116
|
-
next
|
117
|
-
end
|
118
|
-
k = parse_special(i)
|
119
|
-
break unless k
|
120
|
-
i += k
|
121
|
-
next
|
122
|
-
end
|
123
|
-
elsif rawdata[i] == ?& #
|
124
|
-
if rawdata.index(Charref, i) == i
|
125
|
-
i += $&.length
|
126
|
-
handle_charref($1)
|
127
|
-
i -= 1 unless rawdata[i-1] == ?;
|
128
|
-
next
|
129
|
-
end
|
130
|
-
if rawdata.index(Entityref, i) == i
|
131
|
-
i += $&.length
|
132
|
-
handle_entityref($1)
|
133
|
-
i -= 1 unless rawdata[i-1] == ?;
|
134
|
-
next
|
135
|
-
end
|
136
|
-
else
|
137
|
-
raise RuntimeError, 'neither < nor & ??'
|
138
|
-
end
|
139
|
-
# We get here only if incomplete matches but
|
140
|
-
# nothing else
|
141
|
-
match = rawdata.index(Incomplete, i)
|
142
|
-
unless match == i
|
143
|
-
handle_data(rawdata[i, 1])
|
144
|
-
i += 1
|
145
|
-
next
|
146
|
-
end
|
147
|
-
j = match + $&.length
|
148
|
-
break if j == n # Really incomplete
|
149
|
-
handle_data(rawdata[i..(j-1)])
|
150
|
-
i = j
|
151
|
-
end
|
152
|
-
# end while
|
153
|
-
if _end and i < n
|
154
|
-
handle_data(@rawdata[i..(n-1)])
|
155
|
-
i = n
|
156
|
-
end
|
157
|
-
@rawdata = rawdata[i..-1]
|
158
|
-
end
|
159
|
-
|
160
|
-
def parse_comment(i)
|
161
|
-
rawdata = @rawdata
|
162
|
-
if rawdata[i, 4] != '<!--'
|
163
|
-
raise RuntimeError, 'unexpected call to handle_comment'
|
164
|
-
end
|
165
|
-
match = rawdata.index(Commentclose, i)
|
166
|
-
return nil unless match
|
167
|
-
matched_length = $&.length
|
168
|
-
j = match
|
169
|
-
handle_comment(rawdata[i+4..(j-1)])
|
170
|
-
j = match + matched_length
|
171
|
-
return j-i
|
172
|
-
end
|
173
|
-
|
174
|
-
def parse_starttag(i)
|
175
|
-
rawdata = @rawdata
|
176
|
-
j = rawdata.index(Endbracket, i + 1)
|
177
|
-
return nil unless j
|
178
|
-
attrs = []
|
179
|
-
if rawdata[i+1] == ?> #
|
180
|
-
# SGML shorthand: <> == <last open tag seen>
|
181
|
-
k = j
|
182
|
-
tag = @lasttag
|
183
|
-
else
|
184
|
-
match = rawdata.index(Tagfind, i + 1)
|
185
|
-
unless match
|
186
|
-
raise RuntimeError, 'unexpected call to parse_starttag'
|
187
|
-
end
|
188
|
-
k = i + 1 + ($&.length)
|
189
|
-
tag = $&.downcase
|
190
|
-
@lasttag = tag
|
191
|
-
end
|
192
|
-
while k < j
|
193
|
-
break unless rawdata.index(Attrfind, k)
|
194
|
-
matched_length = $&.length
|
195
|
-
attrname, rest, attrvalue = $1, $2, $3
|
196
|
-
if not rest
|
197
|
-
attrvalue = '' # was: = attrname
|
198
|
-
elsif (attrvalue[0] == ?' && attrvalue[-1] == ?') or
|
199
|
-
(attrvalue[0] == ?" && attrvalue[-1] == ?")
|
200
|
-
attrvalue = attrvalue[1..-2]
|
201
|
-
end
|
202
|
-
attrs << [attrname.downcase, attrvalue]
|
203
|
-
k += matched_length
|
204
|
-
end
|
205
|
-
if rawdata[j] == ?> #
|
206
|
-
j += 1
|
207
|
-
end
|
208
|
-
finish_starttag(tag, attrs)
|
209
|
-
return j
|
210
|
-
end
|
211
|
-
|
212
|
-
def parse_endtag(i)
|
213
|
-
rawdata = @rawdata
|
214
|
-
j = rawdata.index(Endbracket, i + 1)
|
215
|
-
return nil unless j
|
216
|
-
tag = (rawdata[i+2..j-1].strip).downcase
|
217
|
-
if rawdata[j] == ?> #
|
218
|
-
j += 1
|
219
|
-
end
|
220
|
-
finish_endtag(tag)
|
221
|
-
return j
|
222
|
-
end
|
223
|
-
|
224
|
-
def finish_starttag(tag, attrs)
|
225
|
-
method = 'start_' + tag
|
226
|
-
if self.respond_to?(method)
|
227
|
-
@stack << tag
|
228
|
-
handle_starttag(tag, method, attrs)
|
229
|
-
return 1
|
230
|
-
else
|
231
|
-
method = 'do_' + tag
|
232
|
-
if self.respond_to?(method)
|
233
|
-
handle_starttag(tag, method, attrs)
|
234
|
-
return 0
|
235
|
-
else
|
236
|
-
unknown_starttag(tag, attrs)
|
237
|
-
return -1
|
238
|
-
end
|
239
|
-
end
|
240
|
-
end
|
241
|
-
|
242
|
-
def finish_endtag(tag)
|
243
|
-
if tag == ''
|
244
|
-
found = @stack.length - 1
|
245
|
-
if found < 0
|
246
|
-
unknown_endtag(tag)
|
247
|
-
return
|
248
|
-
end
|
249
|
-
else
|
250
|
-
unless @stack.include? tag
|
251
|
-
method = 'end_' + tag
|
252
|
-
unless self.respond_to?(method)
|
253
|
-
unknown_endtag(tag)
|
254
|
-
end
|
255
|
-
return
|
256
|
-
end
|
257
|
-
found = @stack.index(tag) #or @stack.length
|
258
|
-
end
|
259
|
-
while @stack.length > found
|
260
|
-
tag = @stack[-1]
|
261
|
-
method = 'end_' + tag
|
262
|
-
if respond_to?(method)
|
263
|
-
handle_endtag(tag, method)
|
264
|
-
else
|
265
|
-
unknown_endtag(tag)
|
266
|
-
end
|
267
|
-
@stack.pop
|
268
|
-
end
|
269
|
-
end
|
270
|
-
|
271
|
-
def parse_special(i)
|
272
|
-
rawdata = @rawdata
|
273
|
-
match = rawdata.index(Endbracket, i+1)
|
274
|
-
return nil unless match
|
275
|
-
matched_length = $&.length
|
276
|
-
handle_special(rawdata[i+1..(match-1)])
|
277
|
-
return match - i + matched_length
|
278
|
-
end
|
279
|
-
|
280
|
-
def handle_starttag(tag, method, attrs)
|
281
|
-
self.send(method, attrs)
|
282
|
-
end
|
283
|
-
|
284
|
-
def handle_endtag(tag, method)
|
285
|
-
self.send(method)
|
286
|
-
end
|
287
|
-
|
288
|
-
def report_unbalanced(tag)
|
289
|
-
if @verbose
|
290
|
-
print '*** Unbalanced </' + tag + '>', "\n"
|
291
|
-
print '*** Stack:', self.stack, "\n"
|
292
|
-
end
|
293
|
-
end
|
294
|
-
|
295
|
-
def handle_charref(name)
|
296
|
-
n = Integer(name)
|
297
|
-
if !(0 <= n && n <= 255)
|
298
|
-
unknown_charref(name)
|
299
|
-
return
|
300
|
-
end
|
301
|
-
handle_data(n.chr)
|
302
|
-
end
|
303
|
-
|
304
|
-
def handle_entityref(name)
|
305
|
-
table = Entitydefs
|
306
|
-
if table.include?(name)
|
307
|
-
handle_data(table[name])
|
308
|
-
else
|
309
|
-
unknown_entityref(name)
|
310
|
-
return
|
311
|
-
end
|
312
|
-
end
|
313
|
-
|
314
|
-
def handle_data(data)
|
315
|
-
end
|
316
|
-
|
317
|
-
def handle_comment(data)
|
318
|
-
end
|
319
|
-
|
320
|
-
def handle_special(data)
|
321
|
-
end
|
322
|
-
|
323
|
-
def unknown_starttag(tag, attrs)
|
324
|
-
end
|
325
|
-
def unknown_endtag(tag)
|
326
|
-
end
|
327
|
-
def unknown_charref(ref)
|
328
|
-
end
|
329
|
-
def unknown_entityref(ref)
|
330
|
-
end
|
331
|
-
|
332
|
-
end
|