cyberweb 0.4.174

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of cyberweb might be problematic. Click here for more details.

Files changed (573) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +3259 -0
  3. data/bin/cyberweb +27 -0
  4. data/cyberweb.gemspec +119 -0
  5. data/doc/AUTHORS.md +12 -0
  6. data/doc/CONVENTIONS.md +7 -0
  7. data/doc/CYBERWEB_TUTORIAL.cgi +43 -0
  8. data/doc/DOCUMENTATION_FOR_CYBERSPRAWL.md +50 -0
  9. data/doc/FUTURE_DESIGN_GOAL_CONSIDERATIONS.md +13 -0
  10. data/doc/JQUERY.md +122 -0
  11. data/doc/MOUSE.md +80 -0
  12. data/doc/README.gen +3231 -0
  13. data/doc/RENDER_WEB_BASE.md +46 -0
  14. data/doc/USAGE.md +246 -0
  15. data/doc/configuration/configuration.md +23 -0
  16. data/doc/deprecations.md +32 -0
  17. data/doc/html_characters.md +15 -0
  18. data/doc/todo/TODO_FOR_THE_CYBERWEB_PROJECT.md +1089 -0
  19. data/examples/README.md +4 -0
  20. data/examples/advanced/delayed_update_of_the_body_via_javascript.cgi +38 -0
  21. data/examples/advanced/hybrid_experiment.cgi +108 -0
  22. data/examples/advanced/larger_image_on_mouse_over_example.cgi +35 -0
  23. data/examples/advanced/no_right_click.cgi +26 -0
  24. data/examples/advanced/objectified_html_tags.cgi +35 -0
  25. data/examples/advanced/simple_calculator.cgi +42 -0
  26. data/examples/advanced/simple_form_example.cgi +38 -0
  27. data/examples/css/blue_border.html +28 -0
  28. data/examples/css/caret_colour_example.html +22 -0
  29. data/examples/css/css_border_spacing_example.html +69 -0
  30. data/examples/css/css_bubbles.html +43 -0
  31. data/examples/css/css_clock.html +344 -0
  32. data/examples/css/css_drag_and_drop.html +89 -0
  33. data/examples/css/css_neon_glow_effects.html +317 -0
  34. data/examples/css/css_text_decoration_example.html +70 -0
  35. data/examples/css/css_tooltip.html +44 -0
  36. data/examples/css/fade_in_and_fade_out_effect.html +66 -0
  37. data/examples/css/font_size_examples.html +40 -0
  38. data/examples/css/letter_spacing_example.cgi +36 -0
  39. data/examples/css/meter_example.html +31 -0
  40. data/examples/css/on_mouse_button_pressed.html +41 -0
  41. data/examples/css/planets.html +187 -0
  42. data/examples/css/scale_example.html +25 -0
  43. data/examples/css/shadow_example_in_CSS.cgi +30 -0
  44. data/examples/css/sticky_div_example.html +56 -0
  45. data/examples/css/stitched_div.html +36 -0
  46. data/examples/csv/README.md +1 -0
  47. data/examples/csv/sample.csv +10 -0
  48. data/examples/example1.rb +7 -0
  49. data/examples/flip_card_example/flip_card_example.html +72 -0
  50. data/examples/frames/frame_left.html +1 -0
  51. data/examples/frames/frame_right.html +1 -0
  52. data/examples/html/README.md +1 -0
  53. data/examples/html/abbr_example.html +25 -0
  54. data/examples/html/base64_image_example.html +26 -0
  55. data/examples/html/colour_wheel.html +1389 -0
  56. data/examples/html/column_width_example.html +34 -0
  57. data/examples/html/custom_cursor.html +103 -0
  58. data/examples/html/draggable_paragraph.html +12 -0
  59. data/examples/html/fieldset_example.html +25 -0
  60. data/examples/html/frames_example.html +7 -0
  61. data/examples/html/glyph_example.html +43 -0
  62. data/examples/html/hbox_and_vbox_example.html +65 -0
  63. data/examples/html/href_examples.html +27 -0
  64. data/examples/html/input_autofocus_example.html +16 -0
  65. data/examples/html/larger_image_on_mouse_over_example.html +30 -0
  66. data/examples/html/ordered_and_unordered_bulletsin.html +33 -0
  67. data/examples/html/play_video_example.html +13 -0
  68. data/examples/html/readonly_textarea_example.html +23 -0
  69. data/examples/html/remote_image_example.html +10 -0
  70. data/examples/html/simple_unordered_list.html +16 -0
  71. data/examples/html/table_with_header_example.html +27 -0
  72. data/examples/html/two_columns_flex_example.html +39 -0
  73. data/examples/javascript/README.md +2 -0
  74. data/examples/javascript/arrays/arrays_example_in_javascript.html +16 -0
  75. data/examples/javascript/delay_example/delay_example.html +46 -0
  76. data/examples/javascript/drag_support/drag_support.html +37 -0
  77. data/examples/javascript/jquery_drag_and_drop/drag_and_drop_image_example.html +33 -0
  78. data/examples/javascript/on_click_event_hello_world/on_click_event_hello_world.html +21 -0
  79. data/examples/javascript/rgb_to_hex/rgb_to_hex.html +15 -0
  80. data/examples/javascript/screen_resolution/screen_resolution.html +20 -0
  81. data/examples/javascript/select_everything/select_everything.html +14 -0
  82. data/examples/javascript/write_into_a_file/write_into_a_file.html +39 -0
  83. data/examples/rack/README.md +4 -0
  84. data/examples/rack/example_with_html_template.rb +123 -0
  85. data/examples/rack/example_with_rack_and_cyberweb_showing_how_to_use_images.rb +56 -0
  86. data/examples/rack/hello_world_example_with_rack.rb +45 -0
  87. data/examples/rack/lobster.rb +79 -0
  88. data/examples/rack/rack_env.rb +10 -0
  89. data/examples/rack/standalone_example.rb +26 -0
  90. data/examples/show_greek_letters.rb +3 -0
  91. data/examples/simple/on_click_event_hello_world.cgi +34 -0
  92. data/examples/sinatra/001_your_ip_address_is.rb +8 -0
  93. data/examples/sinatra/002_the_request_object.rb +16 -0
  94. data/examples/sinatra/003_hello_world_example.rb +82 -0
  95. data/examples/sinatra/004_splat_example.rb +10 -0
  96. data/examples/sinatra/005_attachment_example.rb +11 -0
  97. data/examples/sinatra/006_outer_self_example.rb +8 -0
  98. data/examples/sinatra/007_mime_type_example.rb +17 -0
  99. data/examples/sinatra/008_post_example.rb +55 -0
  100. data/examples/table_example.rb +37 -0
  101. data/images/cyberweb_favicon.png +0 -0
  102. data/images/cyberweb_logo.png +0 -0
  103. data/images/cyberweb_theme.png +0 -0
  104. data/lib/cyberweb/and_sinatra_base.rb +9 -0
  105. data/lib/cyberweb/autoinclude.rb +20 -0
  106. data/lib/cyberweb/autoinclude_webobject.rb +14 -0
  107. data/lib/cyberweb/base/base.rb +41 -0
  108. data/lib/cyberweb/base/colours.rb +69 -0
  109. data/lib/cyberweb/base/constants.rb +18 -0
  110. data/lib/cyberweb/base/encoding.rb +19 -0
  111. data/lib/cyberweb/base/misc.rb +239 -0
  112. data/lib/cyberweb/base/reset.rb +23 -0
  113. data/lib/cyberweb/base/save_file.rb +22 -0
  114. data/lib/cyberweb/cascading_style_sheets/README.md +4 -0
  115. data/lib/cyberweb/cascading_style_sheets/admonition.css +33 -0
  116. data/lib/cyberweb/cascading_style_sheets/balloon.css +344 -0
  117. data/lib/cyberweb/cascading_style_sheets/border.css +202 -0
  118. data/lib/cyberweb/cascading_style_sheets/code.css +58 -0
  119. data/lib/cyberweb/cascading_style_sheets/colours.css +476 -0
  120. data/lib/cyberweb/cascading_style_sheets/default.css +1836 -0
  121. data/lib/cyberweb/cascading_style_sheets/div.css +26 -0
  122. data/lib/cyberweb/cascading_style_sheets/fonts.css +365 -0
  123. data/lib/cyberweb/cascading_style_sheets/links.css +207 -0
  124. data/lib/cyberweb/cascading_style_sheets/margin.css +677 -0
  125. data/lib/cyberweb/cascading_style_sheets/menu.css +37 -0
  126. data/lib/cyberweb/cascading_style_sheets/message_boxes.css +48 -0
  127. data/lib/cyberweb/cascading_style_sheets/misc.css +162 -0
  128. data/lib/cyberweb/cascading_style_sheets/popup.css +63 -0
  129. data/lib/cyberweb/cascading_style_sheets/rpg.css +51 -0
  130. data/lib/cyberweb/cascading_style_sheets/ruby_regexes.css +33 -0
  131. data/lib/cyberweb/cascading_style_sheets/template2.css +18 -0
  132. data/lib/cyberweb/cascading_style_sheets/text_shadow.css +19 -0
  133. data/lib/cyberweb/cascading_style_sheets/tooltip.css +36 -0
  134. data/lib/cyberweb/cgi/README.md +6 -0
  135. data/lib/cyberweb/cgi/cgi.rb +340 -0
  136. data/lib/cyberweb/cgi/constants.rb +121 -0
  137. data/lib/cyberweb/cgi/cookie.rb +218 -0
  138. data/lib/cyberweb/cgi/core.rb +638 -0
  139. data/lib/cyberweb/cgi/exceptions.rb +223 -0
  140. data/lib/cyberweb/cgi/html.rb +1025 -0
  141. data/lib/cyberweb/cgi/mod_ruby_exception_printer.rb +40 -0
  142. data/lib/cyberweb/cgi/query_extension.rb +431 -0
  143. data/lib/cyberweb/cgi/session/file_store.rb +131 -0
  144. data/lib/cyberweb/cgi/session/memory_store.rb +90 -0
  145. data/lib/cyberweb/cgi/session/pstore.rb +127 -0
  146. data/lib/cyberweb/cgi/session.rb +444 -0
  147. data/lib/cyberweb/cgi/tag_maker.rb +94 -0
  148. data/lib/cyberweb/cgi/util.rb +239 -0
  149. data/lib/cyberweb/charts/README.md +2 -0
  150. data/lib/cyberweb/charts/google_charts.rb +51 -0
  151. data/lib/cyberweb/classes/simple_form.rb +55 -0
  152. data/lib/cyberweb/classes/tooltips.rb +169 -0
  153. data/lib/cyberweb/coloured_tags/coloured_tags.rb +3099 -0
  154. data/lib/cyberweb/colours/colour_chart.rb +117 -0
  155. data/lib/cyberweb/colours/colours.rb +50 -0
  156. data/lib/cyberweb/colours/random_colour.rb +28 -0
  157. data/lib/cyberweb/colours/sanitize_for_colours.rb +95 -0
  158. data/lib/cyberweb/commandline/commandline_interface.rb +49 -0
  159. data/lib/cyberweb/configuration/configuration.rb +66 -0
  160. data/lib/cyberweb/configuration/load_the_configuration_file.rb +73 -0
  161. data/lib/cyberweb/constants/array_images.rb +21 -0
  162. data/lib/cyberweb/constants/array_local_css_files.rb +35 -0
  163. data/lib/cyberweb/constants/array_predefined_constants.rb +23 -0
  164. data/lib/cyberweb/constants/configuration_file.rb +33 -0
  165. data/lib/cyberweb/constants/constants.rb +9 -0
  166. data/lib/cyberweb/constants/file_constants.rb +16 -0
  167. data/lib/cyberweb/constants/http_status_codes.rb +42 -0
  168. data/lib/cyberweb/constants/nl.rb +22 -0
  169. data/lib/cyberweb/constants/project_constants.rb +99 -0
  170. data/lib/cyberweb/constants/roebe.rb +28 -0
  171. data/lib/cyberweb/constants/standalone_constants.rb +309 -0
  172. data/lib/cyberweb/controller/README.md +4 -0
  173. data/lib/cyberweb/controller/webobject_controller.rb +50 -0
  174. data/lib/cyberweb/csv/README.md +2 -0
  175. data/lib/cyberweb/csv/csv.rb +58 -0
  176. data/lib/cyberweb/cybersprawl +1 -0
  177. data/lib/cyberweb/debug/debug.rb +69 -0
  178. data/lib/cyberweb/encoding/encoding.rb +84 -0
  179. data/lib/cyberweb/erb/test.rhtml +81 -0
  180. data/lib/cyberweb/erb/test_template.erb +9 -0
  181. data/lib/cyberweb/evaluate_from_the_same_named_file_then_serve.rb +9 -0
  182. data/lib/cyberweb/favicon/favicon.rb +196 -0
  183. data/lib/cyberweb/generator/README.md +2 -0
  184. data/lib/cyberweb/generator/cgi.rb +201 -0
  185. data/lib/cyberweb/generator/class.rb +25 -0
  186. data/lib/cyberweb/generator/static_webpage.rb +162 -0
  187. data/lib/cyberweb/generator/webpage_for_images.rb +553 -0
  188. data/lib/cyberweb/help/help.rb +29 -0
  189. data/lib/cyberweb/html_codes/README.md +15 -0
  190. data/lib/cyberweb/html_codes/greek_letters.rb +204 -0
  191. data/lib/cyberweb/html_tags/README.md +3 -0
  192. data/lib/cyberweb/html_tags/a.rb +65 -0
  193. data/lib/cyberweb/html_tags/accesskey.rb +25 -0
  194. data/lib/cyberweb/html_tags/blockquote.rb +56 -0
  195. data/lib/cyberweb/html_tags/body.rb +14 -0
  196. data/lib/cyberweb/html_tags/br.rb +19 -0
  197. data/lib/cyberweb/html_tags/button.rb +110 -0
  198. data/lib/cyberweb/html_tags/canvas.rb +59 -0
  199. data/lib/cyberweb/html_tags/chtml.rb +14 -0
  200. data/lib/cyberweb/html_tags/div.rb +163 -0
  201. data/lib/cyberweb/html_tags/fieldset.rb +67 -0
  202. data/lib/cyberweb/html_tags/figure.rb +72 -0
  203. data/lib/cyberweb/html_tags/form.rb +203 -0
  204. data/lib/cyberweb/html_tags/h1.rb +75 -0
  205. data/lib/cyberweb/html_tags/h2.rb +73 -0
  206. data/lib/cyberweb/html_tags/h3.rb +58 -0
  207. data/lib/cyberweb/html_tags/h4.rb +60 -0
  208. data/lib/cyberweb/html_tags/h5.rb +54 -0
  209. data/lib/cyberweb/html_tags/h6.rb +54 -0
  210. data/lib/cyberweb/html_tags/hr.rb +22 -0
  211. data/lib/cyberweb/html_tags/html_tags.rb +240 -0
  212. data/lib/cyberweb/html_tags/i.rb +50 -0
  213. data/lib/cyberweb/html_tags/img.rb +294 -0
  214. data/lib/cyberweb/html_tags/input.rb +345 -0
  215. data/lib/cyberweb/html_tags/label.rb +63 -0
  216. data/lib/cyberweb/html_tags/legend.rb +56 -0
  217. data/lib/cyberweb/html_tags/li.rb +67 -0
  218. data/lib/cyberweb/html_tags/map.rb +31 -0
  219. data/lib/cyberweb/html_tags/nav.rb +63 -0
  220. data/lib/cyberweb/html_tags/object.rb +56 -0
  221. data/lib/cyberweb/html_tags/ol.rb +56 -0
  222. data/lib/cyberweb/html_tags/option.rb +61 -0
  223. data/lib/cyberweb/html_tags/p.rb +90 -0
  224. data/lib/cyberweb/html_tags/pre.rb +164 -0
  225. data/lib/cyberweb/html_tags/section.rb +33 -0
  226. data/lib/cyberweb/html_tags/select.rb +100 -0
  227. data/lib/cyberweb/html_tags/span.rb +338 -0
  228. data/lib/cyberweb/html_tags/strong.rb +39 -0
  229. data/lib/cyberweb/html_tags/table.rb +273 -0
  230. data/lib/cyberweb/html_tags/tbody.rb +24 -0
  231. data/lib/cyberweb/html_tags/td.rb +214 -0
  232. data/lib/cyberweb/html_tags/textarea.rb +138 -0
  233. data/lib/cyberweb/html_tags/th.rb +68 -0
  234. data/lib/cyberweb/html_tags/thead.rb +36 -0
  235. data/lib/cyberweb/html_tags/tr.rb +97 -0
  236. data/lib/cyberweb/html_tags/ul.rb +51 -0
  237. data/lib/cyberweb/html_template/html_template.rb +352 -0
  238. data/lib/cyberweb/images/embed_this_image.rb +37 -0
  239. data/lib/cyberweb/images/images.rb +58 -0
  240. data/lib/cyberweb/images/is_image.rb +22 -0
  241. data/lib/cyberweb/images/path_to_images.rb +60 -0
  242. data/lib/cyberweb/images/real/README.md +6 -0
  243. data/lib/cyberweb/images/remove_this_substring_from_all_images.rb +44 -0
  244. data/lib/cyberweb/images/standalone_drag_and_drop_this_image.rb +64 -0
  245. data/lib/cyberweb/images/string_image.rb +399 -0
  246. data/lib/cyberweb/images_base64_encoded/AUSRUFUNGSZEICHEN.png.md +1 -0
  247. data/lib/cyberweb/images_base64_encoded/BLUEARROW.png.md +1 -0
  248. data/lib/cyberweb/images_base64_encoded/BUBBLE.png.md +1 -0
  249. data/lib/cyberweb/images_base64_encoded/CAT.png.md +1 -0
  250. data/lib/cyberweb/images_base64_encoded/CAUTION.png.md +1 -0
  251. data/lib/cyberweb/images_base64_encoded/CHEERING_PERSON.png.md +1 -0
  252. data/lib/cyberweb/images_base64_encoded/CURSOR.png.md +1 -0
  253. data/lib/cyberweb/images_base64_encoded/DOT_01.png.md +5 -0
  254. data/lib/cyberweb/images_base64_encoded/DUCKY.png.md +1 -0
  255. data/lib/cyberweb/images_base64_encoded/ELEPHANT.png.md +1 -0
  256. data/lib/cyberweb/images_base64_encoded/HALLOWEEN.png.md +1 -0
  257. data/lib/cyberweb/images_base64_encoded/HANGING_MONKEY.png.md +1 -0
  258. data/lib/cyberweb/images_base64_encoded/LENS.png.md +1 -0
  259. data/lib/cyberweb/images_base64_encoded/README.md +2 -0
  260. data/lib/cyberweb/images_base64_encoded/TU_WIEN_LOGO.png.md +1 -0
  261. data/lib/cyberweb/images_base64_encoded/VOGEL.png.md +1 -0
  262. data/lib/cyberweb/io/README.md +1 -0
  263. data/lib/cyberweb/io/io.rb +19 -0
  264. data/lib/cyberweb/javascript/drag_and_drop.rb +105 -0
  265. data/lib/cyberweb/javascript/dragula_collection.rb +54 -0
  266. data/lib/cyberweb/javascript/javascript.rb +211 -0
  267. data/lib/cyberweb/javascript/javascript_bundle.rb +223 -0
  268. data/lib/cyberweb/javascript/javascript_clock.rb +69 -0
  269. data/lib/cyberweb/javascript/javascript_last_modified.rb +27 -0
  270. data/lib/cyberweb/javascript/javascript_magic.rb +150 -0
  271. data/lib/cyberweb/javascript/javascript_selectable.rb +24 -0
  272. data/lib/cyberweb/javascript/jquery.rb +30 -0
  273. data/lib/cyberweb/javascript/on_click_change_opacity.rb +97 -0
  274. data/lib/cyberweb/javascript/on_click_hide.rb +63 -0
  275. data/lib/cyberweb/javascript/popup.rb +80 -0
  276. data/lib/cyberweb/javascript/print_javascript.rb +33 -0
  277. data/lib/cyberweb/javascript/registered_javascript_methods.rb +30 -0
  278. data/lib/cyberweb/javascript/resize.rb +28 -0
  279. data/lib/cyberweb/javascript/return_javascript.rb +48 -0
  280. data/lib/cyberweb/javascript/scroll.rb +17 -0
  281. data/lib/cyberweb/javascript/snoweffect.rb +122 -0
  282. data/lib/cyberweb/javascript_code/README.md +6 -0
  283. data/lib/cyberweb/javascript_code/chmod_displayer.js +74 -0
  284. data/lib/cyberweb/javascript_code/custom_functions.js +267 -0
  285. data/lib/cyberweb/javascript_code/jquery/jquery-3.6.0.js +10881 -0
  286. data/lib/cyberweb/javascript_code/jquery/jquery-ui-1.12.1.js +18706 -0
  287. data/lib/cyberweb/javascript_code/rgb_to_hex.js +14 -0
  288. data/lib/cyberweb/javascript_code/select_even_numbers.js +7 -0
  289. data/lib/cyberweb/javascript_code/select_everything.js +22 -0
  290. data/lib/cyberweb/javascript_code/simple_calculator.js +15 -0
  291. data/lib/cyberweb/javascript_code/sleep.js +3 -0
  292. data/lib/cyberweb/javascript_code/to_celsius.js +8 -0
  293. data/lib/cyberweb/mouse/README.md +3 -0
  294. data/lib/cyberweb/mouse/libxdo.rb +321 -0
  295. data/lib/cyberweb/mouse/mouse.rb +264 -0
  296. data/lib/cyberweb/objectified_html_tags/README.md +8 -0
  297. data/lib/cyberweb/objectified_html_tags/a.rb +129 -0
  298. data/lib/cyberweb/objectified_html_tags/abbr.rb +84 -0
  299. data/lib/cyberweb/objectified_html_tags/base.rb +376 -0
  300. data/lib/cyberweb/objectified_html_tags/button.rb +135 -0
  301. data/lib/cyberweb/objectified_html_tags/combobox.rb +165 -0
  302. data/lib/cyberweb/objectified_html_tags/div.rb +129 -0
  303. data/lib/cyberweb/objectified_html_tags/embed.rb +161 -0
  304. data/lib/cyberweb/objectified_html_tags/form.rb +129 -0
  305. data/lib/cyberweb/objectified_html_tags/h1.rb +129 -0
  306. data/lib/cyberweb/objectified_html_tags/h2.rb +129 -0
  307. data/lib/cyberweb/objectified_html_tags/h3.rb +129 -0
  308. data/lib/cyberweb/objectified_html_tags/h4.rb +129 -0
  309. data/lib/cyberweb/objectified_html_tags/h5.rb +129 -0
  310. data/lib/cyberweb/objectified_html_tags/h6.rb +129 -0
  311. data/lib/cyberweb/objectified_html_tags/hbox.rb +71 -0
  312. data/lib/cyberweb/objectified_html_tags/img.rb +202 -0
  313. data/lib/cyberweb/objectified_html_tags/input.rb +185 -0
  314. data/lib/cyberweb/objectified_html_tags/p.rb +129 -0
  315. data/lib/cyberweb/objectified_html_tags/pre.rb +129 -0
  316. data/lib/cyberweb/objectified_html_tags/span.rb +92 -0
  317. data/lib/cyberweb/objectified_html_tags/table.rb +174 -0
  318. data/lib/cyberweb/objectified_html_tags/textarea.rb +173 -0
  319. data/lib/cyberweb/objectified_html_tags/title.rb +82 -0
  320. data/lib/cyberweb/objectified_html_tags/window.rb +79 -0
  321. data/lib/cyberweb/predefined_and_freeform_methods/README.md +1 -0
  322. data/lib/cyberweb/predefined_and_freeform_methods/frage.rb +45 -0
  323. data/lib/cyberweb/predefined_and_freeform_methods/freeform_methods.rb +93 -0
  324. data/lib/cyberweb/predefined_and_freeform_methods/hash_css_class_to_use.rb +55 -0
  325. data/lib/cyberweb/predefined_and_freeform_methods/hash_registered_extra_tags.rb +29 -0
  326. data/lib/cyberweb/predefined_and_freeform_methods/header.rb +81 -0
  327. data/lib/cyberweb/predefined_and_freeform_methods/predefined_methods.rb +413 -0
  328. data/lib/cyberweb/project/project.rb +85 -0
  329. data/lib/cyberweb/rack/README.md +1 -0
  330. data/lib/cyberweb/rack/request.rb +31 -0
  331. data/lib/cyberweb/requires/README.md +4 -0
  332. data/lib/cyberweb/requires/do_require_web_object_files.rb +9 -0
  333. data/lib/cyberweb/requires/remove_html.rb +9 -0
  334. data/lib/cyberweb/requires/require_cgi.rb +16 -0
  335. data/lib/cyberweb/requires/require_charts.rb +20 -0
  336. data/lib/cyberweb/requires/require_generators.rb +23 -0
  337. data/lib/cyberweb/requires/require_html_tags_files.rb +23 -0
  338. data/lib/cyberweb/requires/require_javascript_files.rb +23 -0
  339. data/lib/cyberweb/requires/require_kimurai.rb +13 -0
  340. data/lib/cyberweb/requires/require_objectified_html_tags_files.rb +23 -0
  341. data/lib/cyberweb/requires/require_sinatra.rb +7 -0
  342. data/lib/cyberweb/requires/require_the_constants.rb +26 -0
  343. data/lib/cyberweb/requires/require_the_cyberweb_project.rb +172 -0
  344. data/lib/cyberweb/requires/require_the_html_template.rb +7 -0
  345. data/lib/cyberweb/requires/require_the_toplevel_methods_files.rb +24 -0
  346. data/lib/cyberweb/requires/require_web_images.rb +7 -0
  347. data/lib/cyberweb/requires/require_web_object_files.rb +25 -0
  348. data/lib/cyberweb/requires/require_yaml.rb +11 -0
  349. data/lib/cyberweb/sinatra/README.md +11 -0
  350. data/lib/cyberweb/sinatra/base.rb +145 -0
  351. data/lib/cyberweb/sinatra/custom_extensions.rb +131 -0
  352. data/lib/cyberweb/standalone_classes/all_css_classes.rb +255 -0
  353. data/lib/cyberweb/standalone_classes/calculator.rb +127 -0
  354. data/lib/cyberweb/standalone_classes/correct_image_entries_in_html_file.rb +207 -0
  355. data/lib/cyberweb/standalone_classes/input_focus.rb +97 -0
  356. data/lib/cyberweb/standalone_classes/tag_prototype.rb +43 -0
  357. data/lib/cyberweb/standalone_classes/turn_html_into_cyberweb.rb +174 -0
  358. data/lib/cyberweb/svg/blue_rect.svg +12 -0
  359. data/lib/cyberweb/svg/butterfly.svg +15 -0
  360. data/lib/cyberweb/svg/chemical_molecule.svg +192 -0
  361. data/lib/cyberweb/svg/circles_on_background.svg +29 -0
  362. data/lib/cyberweb/svg/ellipse.svg +12 -0
  363. data/lib/cyberweb/svg/five_circles.svg +26 -0
  364. data/lib/cyberweb/svg/flag_germany.svg +10 -0
  365. data/lib/cyberweb/svg/gaussian_blur.svg +20 -0
  366. data/lib/cyberweb/svg/gradient_circle.svg +18 -0
  367. data/lib/cyberweb/svg/green_butterfly.svg +18 -0
  368. data/lib/cyberweb/svg/green_tilted_lines.svg +25 -0
  369. data/lib/cyberweb/svg/lion.svg +161 -0
  370. data/lib/cyberweb/svg/one_circle.svg +12 -0
  371. data/lib/cyberweb/svg/pie_chart.svg +130 -0
  372. data/lib/cyberweb/svg/svg.cgi +61 -0
  373. data/lib/cyberweb/svg/tetris.svg +487 -0
  374. data/lib/cyberweb/svg/three_circles.svg +18 -0
  375. data/lib/cyberweb/svg/tiger.svg +732 -0
  376. data/lib/cyberweb/svg/tilted_arcs.svg +74 -0
  377. data/lib/cyberweb/svg/transparent_rect.svg +12 -0
  378. data/lib/cyberweb/svg/yellow_fe_blending.svg +42 -0
  379. data/lib/cyberweb/toplevel_methods/a.rb +131 -0
  380. data/lib/cyberweb/toplevel_methods/anmerkung.rb +67 -0
  381. data/lib/cyberweb/toplevel_methods/audio.rb +59 -0
  382. data/lib/cyberweb/toplevel_methods/bold.rb +65 -0
  383. data/lib/cyberweb/toplevel_methods/cgi.rb +65 -0
  384. data/lib/cyberweb/toplevel_methods/charsets.rb +52 -0
  385. data/lib/cyberweb/toplevel_methods/clear.rb +30 -0
  386. data/lib/cyberweb/toplevel_methods/close.rb +62 -0
  387. data/lib/cyberweb/toplevel_methods/consider_serving_the_web_object.rb +41 -0
  388. data/lib/cyberweb/toplevel_methods/css.rb +732 -0
  389. data/lib/cyberweb/toplevel_methods/date.rb +71 -0
  390. data/lib/cyberweb/toplevel_methods/dictionary.rb +48 -0
  391. data/lib/cyberweb/toplevel_methods/disable.rb +49 -0
  392. data/lib/cyberweb/toplevel_methods/document.rb +56 -0
  393. data/lib/cyberweb/toplevel_methods/dot.rb +182 -0
  394. data/lib/cyberweb/toplevel_methods/download_webpage.rb +18 -0
  395. data/lib/cyberweb/toplevel_methods/edit_configuration_file.rb +26 -0
  396. data/lib/cyberweb/toplevel_methods/ee.rb +44 -0
  397. data/lib/cyberweb/toplevel_methods/env.rb +44 -0
  398. data/lib/cyberweb/toplevel_methods/escape_html.rb +54 -0
  399. data/lib/cyberweb/toplevel_methods/fields.rb +46 -0
  400. data/lib/cyberweb/toplevel_methods/filename.rb +33 -0
  401. data/lib/cyberweb/toplevel_methods/frames.rb +131 -0
  402. data/lib/cyberweb/toplevel_methods/glob.rb +30 -0
  403. data/lib/cyberweb/toplevel_methods/google.rb +35 -0
  404. data/lib/cyberweb/toplevel_methods/hardware_information.rb +90 -0
  405. data/lib/cyberweb/toplevel_methods/hfin.rb +56 -0
  406. data/lib/cyberweb/toplevel_methods/html_comment.rb +48 -0
  407. data/lib/cyberweb/toplevel_methods/html_mode.rb +39 -0
  408. data/lib/cyberweb/toplevel_methods/html_tables.rb +818 -0
  409. data/lib/cyberweb/toplevel_methods/input.rb +54 -0
  410. data/lib/cyberweb/toplevel_methods/jquery.rb +82 -0
  411. data/lib/cyberweb/toplevel_methods/last_modified.rb +39 -0
  412. data/lib/cyberweb/toplevel_methods/links.rb +426 -0
  413. data/lib/cyberweb/toplevel_methods/listing.rb +96 -0
  414. data/lib/cyberweb/toplevel_methods/localhost.rb +18 -0
  415. data/lib/cyberweb/toplevel_methods/log_directory.rb +84 -0
  416. data/lib/cyberweb/toplevel_methods/logging.rb +42 -0
  417. data/lib/cyberweb/toplevel_methods/logo.rb +30 -0
  418. data/lib/cyberweb/toplevel_methods/markdown.rb +112 -0
  419. data/lib/cyberweb/toplevel_methods/mathml.rb +130 -0
  420. data/lib/cyberweb/toplevel_methods/message_boxes.rb +140 -0
  421. data/lib/cyberweb/toplevel_methods/misc.rb +1398 -0
  422. data/lib/cyberweb/toplevel_methods/name_of_img_dir.rb +51 -0
  423. data/lib/cyberweb/toplevel_methods/padlem_and_marlem.rb +107 -0
  424. data/lib/cyberweb/toplevel_methods/params.rb +57 -0
  425. data/lib/cyberweb/toplevel_methods/path.rb +69 -0
  426. data/lib/cyberweb/toplevel_methods/pdf.rb +103 -0
  427. data/lib/cyberweb/toplevel_methods/process_content.rb +102 -0
  428. data/lib/cyberweb/toplevel_methods/progress.rb +42 -0
  429. data/lib/cyberweb/toplevel_methods/quote.rb +44 -0
  430. data/lib/cyberweb/toplevel_methods/random.rb +70 -0
  431. data/lib/cyberweb/toplevel_methods/rds.rb +35 -0
  432. data/lib/cyberweb/toplevel_methods/read_and_display.rb +284 -0
  433. data/lib/cyberweb/toplevel_methods/readlines.rb +31 -0
  434. data/lib/cyberweb/toplevel_methods/redirect.rb +29 -0
  435. data/lib/cyberweb/toplevel_methods/registered_ids.rb +178 -0
  436. data/lib/cyberweb/toplevel_methods/remove_html.rb +32 -0
  437. data/lib/cyberweb/toplevel_methods/remove_newlines.rb +28 -0
  438. data/lib/cyberweb/toplevel_methods/return_head_start.rb +33 -0
  439. data/lib/cyberweb/toplevel_methods/return_html_fin.rb +34 -0
  440. data/lib/cyberweb/toplevel_methods/return_html_header.rb +35 -0
  441. data/lib/cyberweb/toplevel_methods/return_html_start.rb +24 -0
  442. data/lib/cyberweb/toplevel_methods/return_html_to_head_start.rb +42 -0
  443. data/lib/cyberweb/toplevel_methods/return_meta_collection.rb +54 -0
  444. data/lib/cyberweb/toplevel_methods/return_pwd.rb +23 -0
  445. data/lib/cyberweb/toplevel_methods/return_strict_doctype.rb +51 -0
  446. data/lib/cyberweb/toplevel_methods/roebe.rb +43 -0
  447. data/lib/cyberweb/toplevel_methods/s2.rb +30 -0
  448. data/lib/cyberweb/toplevel_methods/sanitize_url.rb +57 -0
  449. data/lib/cyberweb/toplevel_methods/sbr.rb +170 -0
  450. data/lib/cyberweb/toplevel_methods/server_base_directory.rb +148 -0
  451. data/lib/cyberweb/toplevel_methods/show_and_display.rb +215 -0
  452. data/lib/cyberweb/toplevel_methods/show_configuration.rb +83 -0
  453. data/lib/cyberweb/toplevel_methods/sitemap.rb +111 -0
  454. data/lib/cyberweb/toplevel_methods/spacer.rb +119 -0
  455. data/lib/cyberweb/toplevel_methods/string_body_start.rb +65 -0
  456. data/lib/cyberweb/toplevel_methods/string_content.rb +35 -0
  457. data/lib/cyberweb/toplevel_methods/svg.rb +66 -0
  458. data/lib/cyberweb/toplevel_methods/tag.rb +237 -0
  459. data/lib/cyberweb/toplevel_methods/temp_directory.rb +73 -0
  460. data/lib/cyberweb/toplevel_methods/test_css.rb +24 -0
  461. data/lib/cyberweb/toplevel_methods/textile.rb +45 -0
  462. data/lib/cyberweb/toplevel_methods/title.rb +125 -0
  463. data/lib/cyberweb/toplevel_methods/umlaute.rb +90 -0
  464. data/lib/cyberweb/toplevel_methods/video.rb +352 -0
  465. data/lib/cyberweb/toplevel_methods/view_source.rb +50 -0
  466. data/lib/cyberweb/toplevel_methods/web_object.rb +42 -0
  467. data/lib/cyberweb/toplevel_methods/write_what_into.rb +27 -0
  468. data/lib/cyberweb/utility_scripts/README.md +4 -0
  469. data/lib/cyberweb/utility_scripts/create_coloured_tags.rb +172 -0
  470. data/lib/cyberweb/utility_scripts/download_balloon_css.rb +160 -0
  471. data/lib/cyberweb/utility_scripts/hyperlink_all_images_from.rb +148 -0
  472. data/lib/cyberweb/version/version.rb +25 -0
  473. data/lib/cyberweb/web_base/web_base.rb +28 -0
  474. data/lib/cyberweb/web_images/array_listing_all_project_images.rb +52 -0
  475. data/lib/cyberweb/web_images/map_symbol_to_image_location.rb +1661 -0
  476. data/lib/cyberweb/web_images/web_images.rb +270 -0
  477. data/lib/cyberweb/web_object/css.rb +627 -0
  478. data/lib/cyberweb/web_object/evaluate.rb +126 -0
  479. data/lib/cyberweb/web_object/favicon.rb +160 -0
  480. data/lib/cyberweb/web_object/html_related_tags.rb +320 -0
  481. data/lib/cyberweb/web_object/images.rb +693 -0
  482. data/lib/cyberweb/web_object/initialize.rb +51 -0
  483. data/lib/cyberweb/web_object/input_related_functionality.rb +414 -0
  484. data/lib/cyberweb/web_object/javascript.rb +427 -0
  485. data/lib/cyberweb/web_object/languages.rb +172 -0
  486. data/lib/cyberweb/web_object/links.rb +228 -0
  487. data/lib/cyberweb/web_object/misc.rb +5159 -0
  488. data/lib/cyberweb/web_object/params.rb +289 -0
  489. data/lib/cyberweb/web_object/reset.rb +192 -0
  490. data/lib/cyberweb/web_object/run.rb +44 -0
  491. data/lib/cyberweb/web_object/sinatra_related_functionality.rb +30 -0
  492. data/lib/cyberweb/web_object/sitemap.rb +176 -0
  493. data/lib/cyberweb/web_object/table.rb +378 -0
  494. data/lib/cyberweb/web_object/web_object.rb +126 -0
  495. data/lib/cyberweb/web_scraper/README.md +8 -0
  496. data/lib/cyberweb/web_scraper/scrape_this_url.rb +183 -0
  497. data/lib/cyberweb/webmin/biology_server.cgi +256 -0
  498. data/lib/cyberweb/webmin/calculator.cgi +52 -0
  499. data/lib/cyberweb/webmin/colour_chart.cgi +33 -0
  500. data/lib/cyberweb/webmin/comments.cgi +137 -0
  501. data/lib/cyberweb/webmin/comments_data +18 -0
  502. data/lib/cyberweb/webmin/constants.rb +46 -0
  503. data/lib/cyberweb/webmin/dictionary.cgi +39 -0
  504. data/lib/cyberweb/webmin/sys_info.cgi +26 -0
  505. data/lib/cyberweb/webmin/webforum.cgi +58 -0
  506. data/lib/cyberweb/webmin/webmin.cgi +679 -0
  507. data/lib/cyberweb/yaml/autogenerated_system_settings.yml +14 -0
  508. data/lib/cyberweb/yaml/custom_tags.yml +7 -0
  509. data/lib/cyberweb/yaml/debug.yml +1 -0
  510. data/lib/cyberweb/yaml/html5_global_attributes.yml +12 -0
  511. data/lib/cyberweb/yaml/html5_new_elements.yml +108 -0
  512. data/lib/cyberweb/yaml/html_tag_legend.yml +12 -0
  513. data/lib/cyberweb/yaml/http_status_codes.yml +38 -0
  514. data/lib/cyberweb/yaml/js_files_to_load.yml +28 -0
  515. data/lib/cyberweb/yaml/project_configuration.yml +229 -0
  516. data/lib/cyberweb/yaml/video_attributes.yml +35 -0
  517. data/lib/cyberweb/yaml/web_images.yml +306 -0
  518. data/lib/cyberweb.rb +5 -0
  519. data/test/README.md +5 -0
  520. data/test/complex_tests/all_tests_in_one_page.cgi +666 -0
  521. data/test/complex_tests/simple_sinatra_example_using_cyberweb/simple.rb +60 -0
  522. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.cgi +7 -0
  523. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.rb +23 -0
  524. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.sinatra +65 -0
  525. data/test/complex_tests/testing_frames.cgi +42 -0
  526. data/test/complex_tests/testing_objectified_html_tags.rb +82 -0
  527. data/test/complex_tests/testing_style_variants/README.md +2 -0
  528. data/test/complex_tests/testing_style_variants/show_coloured_boxes.cgi +58 -0
  529. data/test/complex_tests/testing_tables.cgi +67 -0
  530. data/test/complex_tests/testing_the_cyberweb_shell.rb +188 -0
  531. data/test/complex_tests/testing_web_object.rb +94 -0
  532. data/test/css/README.md +5 -0
  533. data/test/css/return_the_content_of_these_css_classes.rb +7 -0
  534. data/test/css/testing_css_effects.cgi +159 -0
  535. data/test/css/testing_css_masking.cgi +36 -0
  536. data/test/dummy.pdf +0 -0
  537. data/test/hello_world/hello_world.cgi +25 -0
  538. data/test/javascript/README.md +2 -0
  539. data/test/javascript/testing_cheerleader_javascript.cgi +0 -0
  540. data/test/javascript/testing_drag_and_drop_support.cgi +33 -0
  541. data/test/javascript/testing_on_click_change_opacity.cgi +26 -0
  542. data/test/javascript/testing_snowflakes.cgi +20 -0
  543. data/test/simple_tests/README.md +3 -0
  544. data/test/simple_tests/ad-hoc-test.cgi +55 -0
  545. data/test/simple_tests/commandline_tests.rb +70 -0
  546. data/test/simple_tests/display_this_file.cgi +11 -0
  547. data/test/simple_tests/simple_html_example.cgi +29 -0
  548. data/test/simple_tests/simple_status_page.cgi +52 -0
  549. data/test/simple_tests/string_s2_test.rb +11 -0
  550. data/test/simple_tests/test_simple_string_as_input.rb +12 -0
  551. data/test/simple_tests/testing_base64_images.cgi +26 -0
  552. data/test/simple_tests/testing_dragging_an_image.cgi +23 -0
  553. data/test/simple_tests/testing_editable_text.cgi +16 -0
  554. data/test/simple_tests/testing_email.cgi +31 -0
  555. data/test/simple_tests/testing_embedding_a_pdf_file.cgi +32 -0
  556. data/test/simple_tests/testing_google_charts.cgi +24 -0
  557. data/test/simple_tests/testing_html_forms.cgi +31 -0
  558. data/test/simple_tests/testing_html_template.rb +13 -0
  559. data/test/simple_tests/testing_popup_div.cgi +22 -0
  560. data/test/simple_tests/testing_return_dataset_without_any_comments.rb +11 -0
  561. data/test/simple_tests/testing_the_cap_box.cgi +20 -0
  562. data/test/simple_tests/testing_the_div_tag.cgi +21 -0
  563. data/test/simple_tests/testing_the_headers_tag.cgi +36 -0
  564. data/test/simple_tests/testing_the_html_colours.cgi +19 -0
  565. data/test/simple_tests/testing_the_info_box.cgi +19 -0
  566. data/test/simple_tests/testing_the_li_tag.cgi +24 -0
  567. data/test/simple_tests/testing_the_s2_method.rb +7 -0
  568. data/test/simple_tests/testing_the_select_tag.cgi +23 -0
  569. data/test/simple_tests/testing_the_span_tag.cgi +36 -0
  570. data/test/simple_tests/testing_web_images.rb +12 -0
  571. data/test/testing_html_tags/README.md +7 -0
  572. data/test/testing_html_tags/button_example.cgi +42 -0
  573. metadata +759 -0
@@ -0,0 +1,340 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # This file can be found at:
6
+ #
7
+ # require 'cyberweb/cgi/cgi.rb'
8
+ #
9
+ # =========================================================================== #
10
+
11
+ # =========================================================================== #
12
+ # == Overview
13
+ #
14
+ # The "Common Gateway Interface" (CGI) is a simple protocol for passing an
15
+ # HTTP request from a web server to a standalone program, and returning the
16
+ # output to the web browser.
17
+ #
18
+ # Basically, a CGI program is called with the parameters of the request
19
+ # passed in either in the environment (GET) or via $stdin (POST), and
20
+ # everything it prints to $stdout is returned to the client.
21
+ #
22
+ # This file holds the CGI class. This class provides functionality for
23
+ # retrieving HTTP request parameters, managing cookies, and generating HTML
24
+ # output.
25
+ #
26
+ # The file CGI::Session provides session management functionality; see that
27
+ # class for more details.
28
+ #
29
+ # See http://tools.ietf.org/html/draft-robinson-www-interface-00 for more
30
+ # information on the CGI protocol.
31
+ # =========================================================================== #
32
+
33
+ # =========================================================================== #
34
+ # == Introduction
35
+ #
36
+ # CGI is a large class, providing several categories of methods, many of which
37
+ # are mixed in from other modules. Some of the documentation is in this class,
38
+ # some in the modules CGI::QueryExtension and CGI::HtmlExtension. See
39
+ # CGI::Cookie for specific information on handling cookies, and cgi/session.rb
40
+ # (CGI::Session) for information on sessions.
41
+ #
42
+ # For queries, CGI provides methods to get at environmental variables,
43
+ # parameters, cookies, and multipart request data. For responses, CGI provides
44
+ # methods for writing output and generating HTML.
45
+ #
46
+ # Read on for more details. Examples are provided at the bottom.
47
+ # =========================================================================== #
48
+
49
+ # =========================================================================== #
50
+ # == Queries
51
+ #
52
+ # The CGI class dynamically mixes in parameter and cookie-parsing
53
+ # functionality, environmental variable access, and support for
54
+ # parsing multipart requests (including uploaded files) from the
55
+ # CGI::QueryExtension module.
56
+ # =========================================================================== #
57
+
58
+ # =========================================================================== #
59
+ # === Environmental Variables
60
+ #
61
+ # The standard CGI environmental variables are available as read-only
62
+ # attributes of a CGI object.
63
+ #
64
+ # The following is a list of these variables, also available in the file
65
+ # constants.rb:
66
+ #
67
+ # AUTH_TYPE HTTP_HOST REMOTE_IDENT
68
+ # CONTENT_LENGTH HTTP_NEGOTIATE REMOTE_USER
69
+ # CONTENT_TYPE HTTP_PRAGMA REQUEST_METHOD
70
+ # GATEWAY_INTERFACE HTTP_REFERER SCRIPT_NAME
71
+ # HTTP_ACCEPT HTTP_USER_AGENT SERVER_NAME
72
+ # HTTP_ACCEPT_CHARSET PATH_INFO SERVER_PORT
73
+ # HTTP_ACCEPT_ENCODING PATH_TRANSLATED SERVER_PROTOCOL
74
+ # HTTP_ACCEPT_LANGUAGE QUERY_STRING SERVER_SOFTWARE
75
+ # HTTP_CACHE_CONTROL REMOTE_ADDR
76
+ # HTTP_FROM REMOTE_HOST
77
+ #
78
+ # For each of these variables, there is a corresponding attribute with the
79
+ # same name, except all lower case and without a preceding HTTP_.
80
+ # +content_length+ and +server_port+ are integers; the rest are strings.
81
+ # =========================================================================== #
82
+
83
+ # =========================================================================== #
84
+ # === Parameters
85
+ #
86
+ # The method #params() returns a hash of all parameters in the request as
87
+ # name/value-list pairs, where the value-list is an Array of one or more
88
+ # values.
89
+ #
90
+ # The CGI object itself also behaves as a hash of parameter names to
91
+ # values, but only returns a single value (as a String) for each
92
+ # parameter name.
93
+ #
94
+ # For instance, suppose the request contains the parameter
95
+ # "favourite_colours" with the multiple values "blue" and "green". The
96
+ # following behaviour would occur:
97
+ #
98
+ # cgi.params["favourite_colours"] # => ["blue", "green"]
99
+ # cgi["favourite_colours"] # => "blue"
100
+ #
101
+ # If a parameter does not exist, the former method will return an empty
102
+ # array, the latter an empty string. The simplest way to test for
103
+ # existence of a parameter is by the #has_key? method.
104
+ # =========================================================================== #
105
+
106
+ # =========================================================================== #
107
+ # === Cookies
108
+ #
109
+ # HTTP Cookies are automatically parsed from the request. They are available
110
+ # from the #cookies() accessor, which returns a hash from cookie name to
111
+ # CGI::Cookie object.
112
+ # =========================================================================== #
113
+
114
+ # =========================================================================== #
115
+ # === Multipart requests
116
+ #
117
+ # If a request's method is POST and its content type is multipart/form-data,
118
+ # then it may contain uploaded files. These are stored by the QueryExtension
119
+ # module in the parameters of the request. The parameter name is the name
120
+ # attribute of the file input field, as usual. However, the value is not
121
+ # a string, but an IO object, either an IOString for small files, or a
122
+ # Tempfile for larger ones. This object also has the additional singleton
123
+ # methods:
124
+ #
125
+ # #local_path():: the path of the uploaded file on the local filesystem
126
+ # #original_filename():: the name of the file on the client computer
127
+ # #content_type():: the content type of the file
128
+ # =========================================================================== #
129
+
130
+ # =========================================================================== #
131
+ # == Responses
132
+ #
133
+ # The CGI class provides methods for sending header and content output to
134
+ # the HTTP client, and mixes in methods for programmatic HTML generation
135
+ # from CGI::HtmlExtension and CGI::TagMaker modules. The precise version
136
+ # of HTML to use for HTML generation is specified at object creation time.
137
+ # =========================================================================== #
138
+
139
+ # =========================================================================== #
140
+ # === Writing output
141
+ #
142
+ # The simplest way to send output to the HTTP client is using the #out()
143
+ # method. This takes the HTTP headers as a hash parameter, and the body
144
+ # content via a block. The headers can be generated as a string using
145
+ # the #http_header() method. The output stream can be written directly
146
+ # to using the #print() method.
147
+ # =========================================================================== #
148
+
149
+ # =========================================================================== #
150
+ # === Generating HTML
151
+ #
152
+ # Each HTML element has a corresponding method for generating that
153
+ # element as a String. The name of this method is the same as that
154
+ # of the element, all lowercase. The attributes of the element are
155
+ # passed in as a hash, and the body as a no-argument block that evaluates
156
+ # to a String. The HTML generation module knows which elements are
157
+ # always empty, and silently drops any passed-in body. It also knows
158
+ # which elements require matching closing tags and which don't. However,
159
+ # it does not know what attributes are legal for which elements.
160
+ #
161
+ # There are also some additional HTML generation methods mixed in from
162
+ # the CGI::HtmlExtension module. These include individual methods for the
163
+ # different types of form inputs, and methods for elements that commonly
164
+ # take particular attributes where the attributes can be directly specified
165
+ # as arguments, rather than via a hash.
166
+ # =========================================================================== #
167
+
168
+ # =========================================================================== #
169
+ # === Utility HTML escape and other methods like a function.
170
+ #
171
+ # There are some utility tool defined in cgi/util.rb .
172
+ # And when include, you can use utility methods like a function.
173
+ #
174
+ # == Examples of use
175
+ #
176
+ # === Get form values
177
+ #
178
+ # require "cgi"
179
+ # cgi = CGI.new
180
+ # value = cgi['field_name'] # <== value string for 'field_name'
181
+ # # if not 'field_name' included, then return "".
182
+ # fields = cgi.keys # <== array of field names
183
+ #
184
+ # # returns true if form has 'field_name'
185
+ # cgi.has_key?('field_name')
186
+ # cgi.has_key?('field_name')
187
+ # cgi.include?('field_name')
188
+ #
189
+ # CAUTION! cgi['field_name'] returned an Array with the old
190
+ # cgi.rb(included in Ruby 1.6)
191
+ # =========================================================================== #
192
+
193
+ # =========================================================================== #
194
+ # === Get form values as hash
195
+ #
196
+ # require "cgi"
197
+ # cgi = CGI.new
198
+ # params = cgi.params
199
+ #
200
+ # cgi.params is a hash.
201
+ #
202
+ # cgi.params['new_field_name'] = ["value"] # add new param
203
+ # cgi.params['field_name'] = ["new_value"] # change value
204
+ # cgi.params.delete('field_name') # delete param
205
+ # cgi.params.clear # delete all params
206
+ #
207
+ # =========================================================================== #
208
+
209
+ # =========================================================================== #
210
+ # === Save form values to file
211
+ #
212
+ # require "pstore"
213
+ # db = PStore.new("query.db")
214
+ # db.transaction do
215
+ # db["params"] = cgi.params
216
+ # end
217
+ #
218
+ # =========================================================================== #
219
+
220
+ # =========================================================================== #
221
+ # === Restore form values from file
222
+ #
223
+ # require "pstore"
224
+ # db = PStore.new("query.db")
225
+ # db.transaction do
226
+ # cgi.params = db["params"]
227
+ # end
228
+ #
229
+ # =========================================================================== #
230
+
231
+ # =========================================================================== #
232
+ # === Get multipart form values
233
+ #
234
+ # require "cgi"
235
+ # cgi = CGI.new
236
+ # value = cgi['field_name'] # <== value string for 'field_name'
237
+ # value.read # <== body of value
238
+ # value.local_path # <== path to local file of value
239
+ # value.original_filename # <== original filename of value
240
+ # value.content_type # <== content_type of value
241
+ #
242
+ # and value has StringIO or Tempfile class methods.
243
+ # =========================================================================== #
244
+
245
+ # =========================================================================== #
246
+ # === Get cookie values
247
+ #
248
+ # require "cgi"
249
+ # cgi = CGI.new
250
+ # values = cgi.cookies['name'] # <== array of 'name'
251
+ # # if not 'name' included, then return [].
252
+ # names = cgi.cookies.keys # <== array of cookie names
253
+ #
254
+ # and cgi.cookies is a hash.
255
+ # =========================================================================== #
256
+
257
+ # =========================================================================== #
258
+ # === Get cookie objects
259
+ #
260
+ # require "cgi"
261
+ # cgi = CGI.new
262
+ # for name, cookie in cgi.cookies
263
+ # cookie.expires = Time.now + 30
264
+ # end
265
+ # cgi.out("cookie" => cgi.cookies) {"string"}
266
+ #
267
+ # cgi.cookies # { "name1" => cookie1, "name2" => cookie2, ... }
268
+ #
269
+ # require "cgi"
270
+ # cgi = CGI.new
271
+ # cgi.cookies['name'].expires = Time.now + 30
272
+ # cgi.out("cookie" => cgi.cookies['name']) {"string"}
273
+ # =========================================================================== #
274
+
275
+ # =========================================================================== #
276
+ # === Print http header and html string to $DEFAULT_OUTPUT ($>)
277
+ #
278
+ # require 'cgi'
279
+ # cgi = CGI.new("html4") # add HTML generation methods
280
+ # cgi.out do
281
+ # cgi.html do
282
+ # cgi.head do
283
+ # cgi.title { "TITLE" }
284
+ # end +
285
+ # cgi.body do
286
+ # cgi.form("ACTION" => "uri") do
287
+ # cgi.p do
288
+ # cgi.textarea("get_text") +
289
+ # cgi.br +
290
+ # cgi.submit
291
+ # end
292
+ # end +
293
+ # cgi.pre do
294
+ # CGI.escape_html(
295
+ # "params: #{cgi.params.inspect}\n" +
296
+ # "cookies: #{cgi.cookies.inspect}\n" +
297
+ # ENV.map { |key, value|
298
+ # "#{key} --> #{value}\n"
299
+ # }.join("")
300
+ # )
301
+ # end
302
+ # end
303
+ # end
304
+ # end
305
+ #
306
+ # # add HTML generation methods
307
+ # CGI.new("html3") # html3.2
308
+ # CGI.new("html4") # html4.01 (Strict)
309
+ # CGI.new("html4Tr") # html4.01 Transitional
310
+ # CGI.new("html4Fr") # html4.01 Frameset
311
+ # CGI.new("html5") # html5
312
+ #
313
+ # === Some utility methods
314
+ #
315
+ # require 'cyberweb/cgi/util.rb'
316
+ # require 'cyberweb/cgi/util.rb'; CGI.escape_html('Usage: foo "bar" <baz>')
317
+ #
318
+ # === Some utility methods like a function
319
+ #
320
+ # require 'cyberweb/cgi/util.rb'
321
+ # include CGI::Util
322
+ # escapeHTML('Usage: foo "bar" <baz>')
323
+ # h('Usage: foo "bar" <baz>') # alias
324
+ #
325
+ # =========================================================================== #
326
+ module Cyberweb
327
+ class CGI; end # Primer.
328
+ end
329
+
330
+ # =========================================================================== #
331
+ # Cgi-related ruby files:
332
+ # =========================================================================== #
333
+ require 'cyberweb/cgi/core.rb'
334
+ require 'cyberweb/cgi/cookie.rb'
335
+ require 'cyberweb/cgi/mod_ruby_exception_printer.rb'
336
+
337
+ # =========================================================================== #
338
+ # Autoload the html.rb extension.
339
+ # =========================================================================== #
340
+ Cyberweb::CGI.autoload(:HtmlExtension, 'html.rb')
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ module Cyberweb
6
+
7
+ class CGI # === Cyberweb::CGI
8
+
9
+ require 'cyberweb/constants/standalone_constants.rb'
10
+ require 'cyberweb/constants/http_status_codes.rb'
11
+
12
+ # ========================================================================= #
13
+ # === Cyberweb::CGI::ARRAY_PREDEFINED_CGI_ENV_VARIABLES
14
+ #
15
+ # All ENV variables for use in .cgi scripts should be defined here
16
+ # prior to their usage.
17
+ #
18
+ # SCRIPT_NAME will hold the name of the file that is supposed
19
+ # to be served to the visitor.
20
+ # ========================================================================= #
21
+ ARRAY_PREDEFINED_CGI_ENV_VARIABLES = %w(
22
+
23
+ AUTH_TYPE
24
+ CONTENT_TYPE
25
+ GATEWAY_INTERFACE
26
+ HTTP_ACCEPT
27
+ HTTP_ACCEPT_CHARSET
28
+ HTTP_ACCEPT_ENCODING
29
+ HTTP_ACCEPT_LANGUAGE
30
+ HTTP_CACHE_CONTROL
31
+ HTTP_FROM
32
+ HTTP_HOST
33
+ HTTP_NEGOTIATE
34
+ HTTP_PRAGMA
35
+ HTTP_REFERER
36
+ HTTP_USER_AGENT
37
+ PATH_INFO
38
+ PATH_TRANSLATED
39
+ QUERY_STRING
40
+ REMOTE_ADDR
41
+ REMOTE_HOST
42
+ REMOTE_IDENT
43
+ REMOTE_USER
44
+ REQUEST_METHOD
45
+ SCRIPT_NAME
46
+ SERVER_NAME
47
+ SERVER_PROTOCOL
48
+ SERVER_SOFTWARE
49
+
50
+ )
51
+
52
+ # ========================================================================= #
53
+ # === RFC822_MONTHS
54
+ # ========================================================================= #
55
+ RFC822_MONTHS = ::Cyberweb::RFC822_MONTHS
56
+
57
+ # ========================================================================= #
58
+ # === RFC822_DAYS
59
+ # ========================================================================= #
60
+ RFC822_DAYS = ::Cyberweb::RFC822_DAYS
61
+
62
+ # ========================================================================= #
63
+ # === CR
64
+ # ========================================================================= #
65
+ CR = ::Cyberweb::CR
66
+
67
+ # ========================================================================= #
68
+ # === LF
69
+ # ========================================================================= #
70
+ LF = ::Cyberweb::LF
71
+
72
+ # ========================================================================= #
73
+ # === EOL
74
+ #
75
+ # Standard internet newline sequence
76
+ # ========================================================================= #
77
+ EOL = ::Cyberweb::EOL
78
+
79
+ # ========================================================================= #
80
+ # === REVISION
81
+ #
82
+ # CGI-internal revision.
83
+ # ========================================================================= #
84
+ REVISION = '03 Aug 2018'
85
+
86
+ # ========================================================================= #
87
+ # === NEEDS_BINMODE
88
+ #
89
+ # Whether processing will be required in binary vs text
90
+ # ========================================================================= #
91
+ NEEDS_BINMODE = File::BINARY != 0
92
+
93
+ # ========================================================================= #
94
+ # === HTTP_STATUS
95
+ #
96
+ # HTTP status codes are defined here.
97
+ #
98
+ # They can be used through this hash here such as:
99
+ #
100
+ # HTTP_STATUS['OK'] # gives '200 OK'.
101
+ #
102
+ # ========================================================================= #
103
+ HTTP_STATUS = ::Cyberweb::HTTP_STATUS
104
+
105
+ # ========================================================================= #
106
+ # === Cyberweb::CGI.predefined_cgi_env_variables
107
+ # ========================================================================= #
108
+ def self.predefined_cgi_env_variables
109
+ ARRAY_PREDEFINED_CGI_ENV_VARIABLES
110
+ end
111
+
112
+ end
113
+
114
+ # =========================================================================== #
115
+ # === Cyberweb.environment?
116
+ # =========================================================================== #
117
+ def self.environment?
118
+ ::Cyberweb::CGI.predefined_cgi_env_variables
119
+ end
120
+
121
+ end
@@ -0,0 +1,218 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === Cyberweb::CGI::Cookie
6
+ #
7
+ # The Cookie Class represents a HTTP cookie.
8
+ #
9
+ # In addition to its specific fields and methods, a Cookie
10
+ # instance is a delegator to the array of its values.
11
+ #
12
+ # See RFC 2965.
13
+ #
14
+ # == Usage examples:
15
+ #
16
+ # cookie1 = CGI::Cookie.new("name", "value1", "value2", ...)
17
+ # cookie1 = CGI::Cookie.new("name" => "name", "value" => "value")
18
+ # cookie1 = CGI::Cookie.new('name' => 'name',
19
+ # 'value' => ['value1', 'value2', ...],
20
+ # 'path' => 'path', # optional
21
+ # 'domain' => 'domain', # optional
22
+ # 'expires' => Time.now, # optional
23
+ # 'secure' => true # optional
24
+ # )
25
+ #
26
+ # cgi.out("cookie" => [cookie1, cookie2]) { "string" }
27
+ #
28
+ # name = cookie1.name
29
+ # values = cookie1.value
30
+ # path = cookie1.path
31
+ # domain = cookie1.domain
32
+ # expires = cookie1.expires
33
+ # secure = cookie1.secure
34
+ #
35
+ # cookie1.name = 'name'
36
+ # cookie1.value = ['value1', 'value2', ...]
37
+ # cookie1.path = 'path'
38
+ # cookie1.domain = 'domain'
39
+ # cookie1.expires = Time.now + 30
40
+ # cookie1.secure = true
41
+ # =========================================================================== #
42
+ # The cookie-part depends on the file util.rb
43
+ # =========================================================================== #
44
+ module Cyberweb
45
+
46
+ class CGI
47
+
48
+ require 'cyberweb/cgi/util.rb'
49
+
50
+ class Cookie < Array # === Cyberweb::CGI::Cookie
51
+
52
+ @@accept_charset = 'UTF-8' unless defined? @@accept_charset
53
+
54
+ # ======================================================================= #
55
+ # Name of this cookie, as a +String+.
56
+ # ======================================================================= #
57
+ attr_accessor :name
58
+ # ======================================================================= #
59
+ # The path for which this cookie applies, as a +String+
60
+ # ======================================================================= #
61
+ attr_accessor :path
62
+ # ======================================================================= #
63
+ # Domain for which this cookie applies, as a +String+
64
+ # ======================================================================= #
65
+ attr_accessor :domain
66
+ # ======================================================================= #
67
+ # Time at which this cookie expires, as a +Time+
68
+ # ======================================================================= #
69
+ attr_accessor :expires
70
+ # ======================================================================= #
71
+ # True if this cookie is secure; false otherwise
72
+ # ======================================================================= #
73
+ attr_reader :secure
74
+
75
+ # ======================================================================= #
76
+ # === initialize
77
+ #
78
+ # Create a new CGI::Cookie object.
79
+ #
80
+ # :call-seq:
81
+ # Cookie.new(name_string,*value)
82
+ # Cookie.new(options_hash)
83
+ #
84
+ # +name_string+::
85
+ # The name of the cookie; in this form, there is no #domain or
86
+ # #expiration. The #path is gleaned from the +SCRIPT_NAME+ environment
87
+ # variable, and #secure is false.
88
+ # <tt>*value</tt>::
89
+ # value or list of values of the cookie
90
+ # +options_hash+::
91
+ # A Hash of options to initialize this Cookie. Possible options are:
92
+ #
93
+ # name:: the name of the cookie. Required.
94
+ # value:: the cookie's value or list of values.
95
+ # path:: the path for which this cookie applies. Defaults to the
96
+ # the value of the +SCRIPT_NAME+ environment variable.
97
+ # domain:: the domain for which this cookie applies.
98
+ # expires:: the time at which this cookie expires, as a +Time+ object.
99
+ # secure:: whether this cookie is a secure cookie or not (default to
100
+ # false). Secure cookies are only transmitted to HTTPS
101
+ # servers.
102
+ #
103
+ # These keywords correspond to attributes of the cookie object.
104
+ # ======================================================================= #
105
+ def initialize(
106
+ name = '', *value
107
+ )
108
+ @domain = nil
109
+ @expires = nil
110
+ if name.is_a? String
111
+ @name = name
112
+ %r|^(.*/)|.match(ENV['SCRIPT_NAME'])
113
+ @path = ($1 or '')
114
+ @secure = false
115
+ return super(value)
116
+ end
117
+
118
+ options = name
119
+ unless options.has_key? 'name'
120
+ raise ArgumentError, "`name' required"
121
+ end
122
+
123
+ @name = options['name']
124
+ value = Array(options["value"])
125
+ # simple support for IE
126
+ if options['path']
127
+ @path = options['path']
128
+ else
129
+ %r|^(.*/)|.match(ENV["SCRIPT_NAME"])
130
+ @path = ($1 or "")
131
+ end
132
+ @domain = options['domain']
133
+ @expires = options['expires']
134
+ @secure = options['secure'] == true ? true : false
135
+ super(value)
136
+ end
137
+
138
+ # ======================================================================= #
139
+ # === value
140
+ #
141
+ # Returns the value or list of values for this cookie.
142
+ # ======================================================================= #
143
+ def value
144
+ self
145
+ end
146
+
147
+ # ======================================================================= #
148
+ # === value=
149
+ #
150
+ # Replaces the value of this cookie with a new value or list of values.
151
+ # ======================================================================= #
152
+ def value=(i)
153
+ replace(Array(i))
154
+ end
155
+
156
+ # ======================================================================= #
157
+ # === secure=
158
+ #
159
+ # Set whether the Cookie is a secure cookie or not.
160
+ #
161
+ # +val+ must be a boolean.
162
+ # ======================================================================= #
163
+ def secure=(i)
164
+ @secure = i if i == true or i == false
165
+ @secure # And return it.
166
+ end
167
+
168
+ # ======================================================================= #
169
+ # === to_s
170
+ #
171
+ # Convert the Cookie to its string representation.
172
+ # ======================================================================= #
173
+ def to_s
174
+ val = map {|v| CGI.escape(v) }.join("&")
175
+ buf = "#{@name}=#{val}"
176
+ buf << "; domain=#{@domain}" if @domain
177
+ buf << "; path=#{@path}" if @path
178
+ buf << "; expires=#{CGI::rfc1123_date(@expires)}" if @expires
179
+ buf << "; secure" if @secure == true
180
+ buf
181
+ end
182
+
183
+ # ======================================================================= #
184
+ # === Cookie.parse
185
+ #
186
+ # Parse a raw cookie string into a hash of cookie-name=>Cookie pairs.
187
+ #
188
+ # cookies = CGI::Cookie.parse("raw_cookie_string")
189
+ # # { "name1" => cookie1, "name2" => cookie2, ... }
190
+ # ======================================================================= #
191
+ def self.parse(raw_cookie)
192
+ cookies = Hash.new([])
193
+ return cookies unless raw_cookie
194
+ raw_cookie.split(/[;,]\s?/).each { |pairs|
195
+ name, values = pairs.split('=', 2)
196
+ next unless name and values
197
+ name = CGI.unescape(name)
198
+ values ||= ''
199
+ values = values.split('&').map {|v| CGI.unescape(v, @@accept_charset) }
200
+ if cookies.has_key?(name)
201
+ values = cookies[name].value + values
202
+ end
203
+ cookies[name] = Cookie.new(name, *values)
204
+ }
205
+ cookies
206
+ end
207
+
208
+ # ======================================================================= #
209
+ # === inspect
210
+ #
211
+ # A summary of the cookie string.
212
+ # ======================================================================= #
213
+ def inspect
214
+ "#<Cyberweb::CGI::Cookie: #{self.to_s.inspect}>"
215
+ end
216
+ end # class Cookie
217
+
218
+ end; end