cyberweb 0.4.174 → 0.5.225

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 (625) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1782 -405
  3. data/bin/cyberweb_sanitize +10 -0
  4. data/bin/download_webpage +7 -0
  5. data/bin/html_to_cyberweb_converter +7 -0
  6. data/cyberweb.gemspec +25 -25
  7. data/doc/README.gen +1745 -383
  8. data/doc/USAGE.md +16 -16
  9. data/doc/{AUTHORS.md → authors.md} +0 -0
  10. data/doc/configuration/configuration.md +3 -1
  11. data/doc/deprecations.md +13 -7
  12. data/doc/{DOCUMENTATION_FOR_CYBERSPRAWL.md → documentation_for_cybersprawl.md} +7 -4
  13. data/doc/future_design_goals.md +33 -0
  14. data/doc/html_characters.md +7 -7
  15. data/doc/{JQUERY.md → jquery/jquery.md} +20 -12
  16. data/doc/{MOUSE.md → mouse.md} +1 -9
  17. data/doc/{RENDER_WEB_BASE.md → render_web_base.md} +11 -4
  18. data/doc/todo/todo_for_the_cyberweb_project.md +791 -0
  19. data/examples/advanced/animated_css_example/animated_css_example.html +47 -0
  20. data/examples/advanced/animated_submarine/animated_submarine.html +511 -0
  21. data/examples/advanced/animated_windmill/animated_windmill.html +468 -0
  22. data/examples/advanced/delayed_update_of_the_body_via_javascript.cgi +8 -5
  23. data/examples/advanced/draw_circle/draw_circle.cgi +36 -0
  24. data/examples/advanced/drop_shadow_examples.cgi +37 -0
  25. data/examples/advanced/games/snake/food.png +0 -0
  26. data/examples/advanced/games/snake/ground.png +0 -0
  27. data/examples/advanced/games/snake/snake.cgi +28 -0
  28. data/examples/advanced/games/tetris/tetris.cgi +7 -0
  29. data/examples/advanced/games/tetris/tetris.rb +17 -0
  30. data/examples/advanced/games/tetris/tetris.sinatra +58 -0
  31. data/examples/advanced/games/tic-tac-toe/tic-tac-toe.cgi +123 -0
  32. data/examples/advanced/get_some_coffee/get_some_coffee.html +293 -0
  33. data/examples/advanced/glow_on_hover_example/glow_on_hover_example.cgi +27 -0
  34. data/examples/advanced/hybrid_experiment.cgi +34 -12
  35. data/examples/advanced/images/global_css_rules_for_the_images.cgi +32 -0
  36. data/examples/advanced/larger_image_on_mouse_over_example.cgi +2 -2
  37. data/examples/advanced/no_right_click.cgi +4 -3
  38. data/examples/advanced/{objectified_html_tags.cgi → objectified_html_tags/objectified_html_tags.cgi} +12 -3
  39. data/examples/advanced/objectified_html_tags/testing_objectified_html_tags_with_the_webobject.cgi +28 -0
  40. data/examples/advanced/random_glow_effects.cgi +34 -0
  41. data/examples/advanced/select_everything_example/select_everything_example.cgi +25 -0
  42. data/examples/advanced/simple_calculator.cgi +13 -21
  43. data/examples/advanced/simple_form_example.cgi +11 -11
  44. data/examples/advanced/traffic_light/traffic_light.html +163 -0
  45. data/examples/advanced/weather_animation/weather_animation.html +560 -0
  46. data/examples/css/animated_3D_cube_example/animated_3D_cube_example.html +265 -0
  47. data/examples/css/animated_bird_example/animated_bird_example.html +207 -0
  48. data/examples/css/animated_desk_example/animated_desk_example.html +120 -0
  49. data/examples/css/animated_dog_example/animated_dog_example.html +432 -0
  50. data/examples/css/animated_submit_button.html +190 -0
  51. data/examples/css/animated_text_colour_change/animated_text_colour_change.html +41 -0
  52. data/examples/css/blue_border.html +3 -1
  53. data/examples/css/border_image_example/border_image_example.html +40 -0
  54. data/examples/css/box_shadow/box_shadow_example.html +18 -0
  55. data/examples/css/christmas_snow_globe_animation.html +596 -0
  56. data/examples/css/css_border_spacing_example.html +5 -5
  57. data/examples/css/css_bubbles.html +3 -1
  58. data/examples/css/css_checkboxes_example/css_checkboxes_example.html +110 -0
  59. data/examples/css/css_drag_and_drop.html +1 -5
  60. data/examples/css/css_grid_feline_style/css_grid_feline_style.html +161 -0
  61. data/examples/css/css_neon_glow_effects.html +1 -1
  62. data/examples/css/css_rotate_these_words.html +83 -0
  63. data/examples/css/css_text_decoration_example.html +7 -7
  64. data/examples/css/css_thermometer/css_thermometer.html +91 -0
  65. data/examples/css/{css_tooltip.html → css_tooltip/css_tooltip.html} +8 -6
  66. data/examples/css/css_typewriter_example/css_typewriter_example.html +226 -0
  67. data/examples/css/cyberweb_animated_logo/cyberweb_animated_logo.html +179 -0
  68. data/examples/css/daily_coffee/daily_coffee.html +1110 -0
  69. data/examples/css/different_colour_on_selected_text/different_colour_on_selected_text.html +31 -0
  70. data/examples/css/differentially_glowing_text_example/differentially_glowing_text_example.html +82 -0
  71. data/examples/css/fade_in_and_fade_out_effect.html +2 -2
  72. data/examples/css/flying_birds_example/flying_birds_example.html +171 -0
  73. data/examples/css/folding_cards_example/folding_cards_example.html +624 -0
  74. data/examples/css/font_size_examples.html +7 -5
  75. data/examples/css/glowing_on_hover_animation/glowing_on_hover_animation.html +90 -0
  76. data/examples/css/grow_example.html +31 -0
  77. data/examples/css/happy_toaster_example/happy_toaster_example.html +830 -0
  78. data/examples/css/landing_on_mars_animation/landing_on_mars_animation.html +374 -0
  79. data/examples/css/letter_spacing_example.cgi +18 -14
  80. data/examples/css/lighthouse_example/lighthouse_example.html +1161 -0
  81. data/examples/css/{meter_example.html → meter_example/meter_example.html} +0 -0
  82. data/examples/css/motorcycle_on_the_go/motorcycle_on_the_go.html +227 -0
  83. data/examples/css/on_hover_glow_effect/on_hover_glow_effect.html +50 -0
  84. data/examples/css/on_mouse_button_pressed.html +6 -4
  85. data/examples/css/our_solar_system/our_solar_system.html +441 -0
  86. data/examples/css/outline/outline_versus_border_example.html +57 -0
  87. data/examples/css/polaroid_card_effect_example/polaroid_card_effect_example.html +130 -0
  88. data/examples/css/responsive_image_gallery/responsive_image_gallery.html +97 -0
  89. data/examples/css/rotating_DNA/rotating_DNA.html +626 -0
  90. data/examples/css/rotating_sphere_example/rotating_sphere_example.html +112 -0
  91. data/examples/css/scale_example.html +4 -5
  92. data/examples/css/shadow_example_in_CSS/shadow_example_in_CSS.cgi +62 -0
  93. data/examples/css/shaking_shapes_example.html +133 -0
  94. data/examples/css/simple_stars_example/simple_stars_example.html +27 -0
  95. data/examples/css/slide_checkbox_example/slide_checkbox_example.html +564 -0
  96. data/examples/css/speak_bubble_quote_example/speak_bubble_quote_example.html +109 -0
  97. data/examples/css/speedy_truck_example/speedy_truck_example.html +168 -0
  98. data/examples/css/{sticky_div_example.html → sticky_div_example/sticky_div_example.html} +0 -0
  99. data/examples/css/stitched_div.html +9 -0
  100. data/examples/css/sun_and_clouds_animation/sun_and_clouds_animation.html +292 -0
  101. data/examples/css/talking_candles_example/talking_candles_example.html +550 -0
  102. data/examples/css/text_decoration_underline_example/text_decoration_underline_example.html +62 -0
  103. data/examples/css/this_is_a_cat/this_is_a_cat.html +219 -0
  104. data/examples/css/three_dots_indicating_page_loading.html +65 -0
  105. data/examples/css/user_select_example/user_select_example.html +24 -0
  106. data/examples/css/walking_cat/walking_cat.html +128 -0
  107. data/examples/css/water_wave_text_animation_effect/water_wave_text_animation_effect.html +86 -0
  108. data/examples/csv/README.md +2 -1
  109. data/examples/flip_card_example/flip_card_example.html +10 -3
  110. data/examples/games/README.md +3 -0
  111. data/examples/games/snake/images/food.png +0 -0
  112. data/examples/games/snake/images/ground.png +0 -0
  113. data/examples/games/snake/snake.html +16 -0
  114. data/examples/games/snake/snake.js +117 -0
  115. data/examples/games/tetris/smaller_tetris_game.html +518 -0
  116. data/examples/games/tetris/tetris.html +461 -0
  117. data/examples/games/tic-tac-toe/index.js +125 -0
  118. data/examples/games/tic-tac-toe/style.css +79 -0
  119. data/examples/games/tic-tac-toe/tic-tac-toe.html +39 -0
  120. data/examples/html/MathML/001_show_a_simple_quadratic_equation.html +22 -0
  121. data/examples/html/MathML/002_simple_equation.html +7 -0
  122. data/examples/html/MathML/003_function_of_example.html +17 -0
  123. data/examples/html/MathML/README.md +2 -0
  124. data/examples/html/abbr_example.html +2 -5
  125. data/examples/html/accordion/README.md +1 -0
  126. data/examples/html/accordion/accordion.html +56 -0
  127. data/examples/html/base64_image_example.html +8 -5
  128. data/examples/html/buttons_example.html +133 -0
  129. data/examples/html/canvas_drawing_example.html +54 -0
  130. data/examples/html/colour_wheel.html +441 -442
  131. data/examples/html/column_width_example.html +2 -2
  132. data/examples/html/custom_cursor.html +8 -5
  133. data/examples/html/cyberweb_logo/README.md +2 -0
  134. data/examples/html/cyberweb_logo/cyberweb_logo.html +11 -0
  135. data/examples/html/draggable_paragraph.html +1 -2
  136. data/examples/html/email_popup_example/email_popup_example.html +175 -0
  137. data/examples/html/fieldset_example.html +3 -1
  138. data/examples/html/font_examples/README.md +1 -0
  139. data/examples/html/font_examples/chancery_text.html +19 -0
  140. data/examples/html/font_examples/fantasy_text.html +19 -0
  141. data/examples/html/font_examples/georgia_text.html +19 -0
  142. data/examples/html/font_size_example/font_size_example.html +85 -0
  143. data/examples/html/glyph_example.html +0 -1
  144. data/examples/html/grayscale_filter_example/grayscale_filter_example.html +15 -0
  145. data/examples/html/html_links_example.html +61 -0
  146. data/examples/html/html_slider/html_slider.html +39 -0
  147. data/examples/html/input_autofocus_example.html +11 -7
  148. data/examples/html/input_placeholder_example.html +15 -0
  149. data/examples/html/larger_image_on_mouse_over_example.html +1 -1
  150. data/examples/html/ordered_and_unordered_bulletsin.html +4 -2
  151. data/examples/html/play_video_example.html +3 -2
  152. data/examples/html/remote_image_example.html +8 -2
  153. data/examples/html/select_everything_on_mouse_click_event.html +38 -0
  154. data/examples/html/selected_text_appears_in_another_colour_example.html +34 -0
  155. data/examples/html/send_email_hyperlink/send_email_hyperlink.html +8 -0
  156. data/examples/html/simple_unordered_list.html +3 -0
  157. data/examples/html/spinner_example/spinner.html +79 -0
  158. data/examples/html/table_with_header_example.html +26 -13
  159. data/examples/html/test_mkv_codec/test_mkv_codec.html +11 -0
  160. data/examples/html/two_columns_flex_example.html +4 -1
  161. data/examples/{javascript → javascript_and_jquery}/README.md +0 -0
  162. data/examples/{javascript → javascript_and_jquery}/arrays/arrays_example_in_javascript.html +0 -0
  163. data/examples/javascript_and_jquery/autocomplete_on_an_input_field/autocomplete_on_an_input_field.html +295 -0
  164. data/examples/javascript_and_jquery/change_the_background_colour_dynamically/change_the_background_colour_dynamically.html +41 -0
  165. data/examples/{javascript → javascript_and_jquery}/delay_example/delay_example.html +0 -0
  166. data/examples/{javascript → javascript_and_jquery}/drag_support/drag_support.html +0 -0
  167. data/examples/javascript_and_jquery/jquery_bubbling_header/bubbling_header.html +109 -0
  168. data/examples/{javascript → javascript_and_jquery}/jquery_drag_and_drop/drag_and_drop_image_example.html +0 -0
  169. data/examples/javascript_and_jquery/jquery_showcase/README.md +6 -0
  170. data/examples/javascript_and_jquery/jquery_showcase/jquery_001.cgi +23 -0
  171. data/examples/javascript_and_jquery/jquery_showcase/jquery_002.cgi +34 -0
  172. data/examples/javascript_and_jquery/jquery_showcase/jquery_003.cgi +24 -0
  173. data/examples/javascript_and_jquery/jquery_showcase/jquery_004.cgi +34 -0
  174. data/examples/javascript_and_jquery/on_change_event/on_change_event.html +29 -0
  175. data/examples/javascript_and_jquery/on_click_colour_change/on_click_colour_change.html +31 -0
  176. data/examples/javascript_and_jquery/on_click_display_random_number/on_click_display_random_number.html +43 -0
  177. data/examples/{javascript → javascript_and_jquery}/on_click_event_hello_world/on_click_event_hello_world.html +0 -0
  178. data/examples/javascript_and_jquery/on_mouse_wheel_event/on_mouse_wheel_event.html +37 -0
  179. data/examples/javascript_and_jquery/read_the_content_of_a_local_file/read_the_content_of_a_local_file.html +35 -0
  180. data/examples/{javascript → javascript_and_jquery}/rgb_to_hex/rgb_to_hex.html +0 -0
  181. data/examples/{javascript → javascript_and_jquery}/screen_resolution/screen_resolution.html +2 -1
  182. data/examples/{javascript → javascript_and_jquery}/select_everything/select_everything.html +1 -1
  183. data/examples/javascript_and_jquery/vue/README.md +1 -0
  184. data/examples/javascript_and_jquery/vue/showcasing_vue.html +80 -0
  185. data/examples/{javascript → javascript_and_jquery}/write_into_a_file/write_into_a_file.html +0 -0
  186. data/examples/rack/example_with_html_template.rb +5 -4
  187. data/examples/rack/example_with_rack_and_cyberweb_showing_how_to_use_images.rb +3 -2
  188. data/examples/rack/hello_world_example_with_rack.rb +3 -2
  189. data/examples/rack/lobster.rb +7 -5
  190. data/examples/rack/rack_env.rb +3 -3
  191. data/examples/{show_greek_letters.rb → show_greek_letters/show_greek_letters.rb} +0 -0
  192. data/examples/simple/input_example_with_coloured_focus.cgi +32 -0
  193. data/examples/simple/input_type_examples.cgi +51 -0
  194. data/examples/simple/on_click_event_hello_world.cgi +5 -5
  195. data/examples/simple/rotate_these_words.cgi +90 -0
  196. data/examples/{example1.rb → simple/show_how_to_set_a_title.rb} +0 -0
  197. data/examples/simple/simple_gradient.cgi +57 -0
  198. data/images/cyberweb_favicon.png +0 -0
  199. data/images/cyberweb_logo.png +0 -0
  200. data/images/cyberweb_theme.png +0 -0
  201. data/lib/cyberweb/REST/README.md +7 -0
  202. data/lib/cyberweb/REST/base/accept_entry.rb +94 -0
  203. data/lib/cyberweb/REST/base/application.rb +37 -0
  204. data/lib/cyberweb/REST/base/bad_request.rb +10 -0
  205. data/lib/cyberweb/REST/base/base.rb +1131 -0
  206. data/lib/cyberweb/REST/base/common_logger.rb +35 -0
  207. data/lib/cyberweb/REST/base/delegator.rb +75 -0
  208. data/lib/cyberweb/REST/base/error.rb +8 -0
  209. data/lib/cyberweb/REST/base/extended_rack.rb +66 -0
  210. data/lib/cyberweb/REST/base/helpers/helpers.rb +473 -0
  211. data/lib/cyberweb/REST/base/helpers/stream.rb +75 -0
  212. data/lib/cyberweb/REST/base/mime_type_entry.rb +67 -0
  213. data/lib/cyberweb/{constants/file_constants.rb → REST/base/not_found.rb} +10 -5
  214. data/lib/cyberweb/REST/base/request.rb +145 -0
  215. data/lib/cyberweb/REST/base/response.rb +94 -0
  216. data/lib/cyberweb/REST/base/templates/templates.rb +208 -0
  217. data/lib/cyberweb/REST/base/wrapper.rb +28 -0
  218. data/lib/cyberweb/{constants/nl.rb → REST/constants.rb} +8 -9
  219. data/lib/cyberweb/REST/main.rb +109 -0
  220. data/lib/cyberweb/REST/show_exceptions.rb +396 -0
  221. data/lib/cyberweb/and_sinatra_base.rb +0 -0
  222. data/lib/cyberweb/autoinclude.rb +0 -0
  223. data/lib/cyberweb/autoinclude_webobject.rb +0 -0
  224. data/lib/cyberweb/base/base.rb +9 -2
  225. data/lib/cyberweb/base/colours.rb +8 -6
  226. data/lib/cyberweb/base/constants.rb +8 -0
  227. data/lib/cyberweb/base/misc.rb +140 -53
  228. data/lib/cyberweb/base/save_file.rb +3 -0
  229. data/lib/cyberweb/base_module/base_module.rb +79 -0
  230. data/lib/cyberweb/cascading_style_sheets/admonition.css +0 -0
  231. data/lib/cyberweb/cascading_style_sheets/balloon.css +0 -0
  232. data/lib/cyberweb/cascading_style_sheets/border.css +107 -41
  233. data/lib/cyberweb/cascading_style_sheets/code.css +0 -0
  234. data/lib/cyberweb/cascading_style_sheets/colours.css +46 -23
  235. data/lib/cyberweb/cascading_style_sheets/css_reset.css +59 -0
  236. data/lib/cyberweb/cascading_style_sheets/cursors.css +14 -0
  237. data/lib/cyberweb/cascading_style_sheets/custom/animated_bike.css +199 -0
  238. data/lib/cyberweb/cascading_style_sheets/default.css +171 -136
  239. data/lib/cyberweb/cascading_style_sheets/div.css +18 -4
  240. data/lib/cyberweb/cascading_style_sheets/drop_shadow.css +154 -0
  241. data/lib/cyberweb/cascading_style_sheets/error_404_css_class.css +26 -0
  242. data/lib/cyberweb/cascading_style_sheets/fonts.css +60 -39
  243. data/lib/cyberweb/cascading_style_sheets/glow_effects.css +69 -0
  244. data/lib/cyberweb/cascading_style_sheets/gradient_effects.css +5 -0
  245. data/lib/cyberweb/cascading_style_sheets/hover.css +4212 -0
  246. data/lib/cyberweb/cascading_style_sheets/links.css +8 -8
  247. data/lib/cyberweb/cascading_style_sheets/margin.css +195 -178
  248. data/lib/cyberweb/cascading_style_sheets/menu.css +0 -0
  249. data/lib/cyberweb/cascading_style_sheets/message_boxes.css +0 -0
  250. data/lib/cyberweb/cascading_style_sheets/misc.css +51 -11
  251. data/lib/cyberweb/cascading_style_sheets/popup.css +0 -0
  252. data/lib/cyberweb/cascading_style_sheets/rpg.css +0 -0
  253. data/lib/cyberweb/cascading_style_sheets/ruby_regexes.css +12 -0
  254. data/lib/cyberweb/cascading_style_sheets/shapes.css +59 -0
  255. data/lib/cyberweb/cascading_style_sheets/template2.css +0 -0
  256. data/lib/cyberweb/cascading_style_sheets/text_shadow.css +21 -0
  257. data/lib/cyberweb/cascading_style_sheets/tooltip.css +0 -0
  258. data/lib/cyberweb/cgi/constants.rb +1 -2
  259. data/lib/cyberweb/cgi/exceptions.rb +1 -1
  260. data/lib/cyberweb/coloured_tags/coloured_tags.rb +1 -1
  261. data/lib/cyberweb/colours/colour_chart.rb +10 -56
  262. data/lib/cyberweb/colours/colours.rb +149 -4
  263. data/lib/cyberweb/commandline/commandline_interface.rb +13 -8
  264. data/lib/cyberweb/configuration/load_the_configuration_file.rb +1 -1
  265. data/lib/cyberweb/constants/constants.rb +592 -2
  266. data/lib/cyberweb/controller/{webobject_controller.rb → controller.rb} +1 -1
  267. data/lib/cyberweb/css_manager/css_manager.rb +237 -0
  268. data/lib/cyberweb/databases/sqlite.rb +56 -0
  269. data/lib/cyberweb/debug/debug.rb +1 -1
  270. data/lib/cyberweb/encoding/encoding.rb +11 -0
  271. data/lib/cyberweb/erb/test.rhtml +0 -0
  272. data/lib/cyberweb/erb/test_template.erb +0 -0
  273. data/lib/cyberweb/evaluate_from_the_same_named_file_then_serve.rb +1 -1
  274. data/lib/cyberweb/favicon/favicon.rb +8 -7
  275. data/lib/cyberweb/forum/README.md +4 -0
  276. data/lib/cyberweb/foto_gallery/foto_gallery.rb +158 -0
  277. data/lib/cyberweb/generator/README.md +2 -2
  278. data/lib/cyberweb/generator/cgi.rb +22 -9
  279. data/lib/cyberweb/generator/static_webpage.rb +22 -12
  280. data/lib/cyberweb/html_tags/README.md +3 -3
  281. data/lib/cyberweb/html_tags/button.rb +10 -2
  282. data/lib/cyberweb/html_tags/h2.rb +6 -4
  283. data/lib/cyberweb/html_tags/html_tags.rb +17 -1
  284. data/lib/cyberweb/html_tags/input.rb +10 -5
  285. data/lib/cyberweb/html_tags/legend.rb +1 -1
  286. data/lib/cyberweb/html_tags/span.rb +10 -2
  287. data/lib/cyberweb/html_tags/table.rb +30 -19
  288. data/lib/cyberweb/html_template/html_template.rb +248 -85
  289. data/lib/cyberweb/images/embed_this_image.rb +3 -1
  290. data/lib/cyberweb/images/images.rb +2 -2
  291. data/lib/cyberweb/images/is_image.rb +2 -1
  292. data/lib/cyberweb/images/path_to_images.rb +2 -1
  293. data/lib/cyberweb/images/remove_this_substring_from_all_images.rb +1 -1
  294. data/lib/cyberweb/images/standalone_drag_and_drop_this_image.rb +3 -3
  295. data/lib/cyberweb/images/string_image.rb +6 -3
  296. data/lib/cyberweb/images_base64_encoded/404_ERROR.png.md +1 -0
  297. data/lib/cyberweb/images_base64_encoded/AUSRUFUNGSZEICHEN.png.md +0 -0
  298. data/lib/cyberweb/images_base64_encoded/BLUEARROW.png.md +0 -0
  299. data/lib/cyberweb/images_base64_encoded/BUBBLE.png.md +0 -0
  300. data/lib/cyberweb/images_base64_encoded/CAT.png.md +0 -0
  301. data/lib/cyberweb/images_base64_encoded/CAUTION.png.md +0 -0
  302. data/lib/cyberweb/images_base64_encoded/CHEERING_PERSON.png.md +0 -0
  303. data/lib/cyberweb/images_base64_encoded/CURSOR.png.md +0 -0
  304. data/lib/cyberweb/images_base64_encoded/DOT_01.png.md +0 -0
  305. data/lib/cyberweb/images_base64_encoded/DUCKY.png.md +0 -0
  306. data/lib/cyberweb/images_base64_encoded/ELEPHANT.png.md +0 -0
  307. data/lib/cyberweb/images_base64_encoded/HALLOWEEN.png.md +0 -0
  308. data/lib/cyberweb/images_base64_encoded/HANGING_MONKEY.png.md +0 -0
  309. data/lib/cyberweb/images_base64_encoded/LENS.png.md +0 -0
  310. data/lib/cyberweb/images_base64_encoded/README.md +0 -0
  311. data/lib/cyberweb/images_base64_encoded/SIX_SIDED_DICE.png.md +1 -0
  312. data/lib/cyberweb/images_base64_encoded/TU_WIEN_LOGO.png.md +0 -0
  313. data/lib/cyberweb/images_base64_encoded/VOGEL.png.md +0 -0
  314. data/lib/cyberweb/javascript/drag_and_drop.rb +17 -14
  315. data/lib/cyberweb/javascript/javascript.rb +79 -34
  316. data/lib/cyberweb/javascript/javascript_clock.rb +50 -14
  317. data/lib/cyberweb/javascript/javascript_helper/javascript_helper.rb +59 -0
  318. data/lib/cyberweb/javascript/jquery.rb +9 -5
  319. data/lib/cyberweb/javascript/on_click_change_opacity.rb +5 -1
  320. data/lib/cyberweb/javascript/on_click_hide.rb +2 -0
  321. data/lib/cyberweb/javascript/popup.rb +5 -2
  322. data/lib/cyberweb/javascript/resize.rb +4 -1
  323. data/lib/cyberweb/javascript_code/README.md +1 -1
  324. data/lib/cyberweb/javascript_code/custom_functions.js +51 -25
  325. data/lib/cyberweb/javascript_code/disable_right_click.js +5 -0
  326. data/lib/cyberweb/javascript_code/games/snake.js +113 -0
  327. data/lib/cyberweb/javascript_code/games/tetris.js +491 -0
  328. data/lib/cyberweb/javascript_code/games/tic-tac-toe.js +125 -0
  329. data/lib/cyberweb/javascript_code/html_colours.js +161 -0
  330. data/lib/cyberweb/javascript_code/jquery/jquery-3.6.1.js +10909 -0
  331. data/lib/cyberweb/javascript_code/select_everything_on_mouse_click_event.js +23 -0
  332. data/lib/cyberweb/javascript_code/simple_calculator.js +3 -3
  333. data/lib/cyberweb/javascript_code/simulate_a_dice.js +20 -0
  334. data/lib/cyberweb/javascript_code/sleep.js +3 -0
  335. data/lib/cyberweb/mouse/mouse.rb +4 -1
  336. data/lib/cyberweb/objectified/html_tags/README.md +13 -0
  337. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/a.rb +17 -35
  338. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/abbr.rb +18 -9
  339. data/lib/cyberweb/objectified/html_tags/base.rb +960 -0
  340. data/lib/cyberweb/objectified/html_tags/blockquote.rb +106 -0
  341. data/lib/cyberweb/{objectified_html_tags/span.rb → objectified/html_tags/body.rb} +25 -20
  342. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/button.rb +26 -34
  343. data/lib/cyberweb/objectified/html_tags/canvas.rb +202 -0
  344. data/lib/cyberweb/objectified/html_tags/cite.rb +103 -0
  345. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/combobox.rb +26 -34
  346. data/lib/cyberweb/objectified/html_tags/div.rb +155 -0
  347. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/embed.rb +18 -33
  348. data/lib/cyberweb/objectified/html_tags/fieldset.rb +107 -0
  349. data/lib/cyberweb/objectified/html_tags/figure.rb +152 -0
  350. data/lib/cyberweb/objectified/html_tags/form.rb +155 -0
  351. data/lib/cyberweb/objectified/html_tags/h1.rb +176 -0
  352. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/h2.rb +32 -40
  353. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/h3.rb +30 -42
  354. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/h4.rb +30 -42
  355. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/h5.rb +31 -40
  356. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/h6.rb +31 -41
  357. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/hbox.rb +12 -10
  358. data/lib/cyberweb/objectified/html_tags/head.rb +126 -0
  359. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/img.rb +47 -32
  360. data/lib/cyberweb/objectified/html_tags/include_objectified_html_tags.rb +49 -0
  361. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/input.rb +50 -51
  362. data/lib/cyberweb/objectified/html_tags/map.rb +107 -0
  363. data/lib/cyberweb/{objectified_html_tags/div.rb → objectified/html_tags/meta.rb} +36 -47
  364. data/lib/cyberweb/{objectified_html_tags/h1.rb → objectified/html_tags/object.rb} +34 -42
  365. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/p.rb +17 -32
  366. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/pre.rb +28 -34
  367. data/lib/cyberweb/{objectified_html_tags/table.rb → objectified/html_tags/progress.rb} +99 -94
  368. data/lib/cyberweb/objectified/html_tags/span.rb +103 -0
  369. data/lib/cyberweb/objectified/html_tags/table.rb +257 -0
  370. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/textarea.rb +25 -36
  371. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/title.rb +11 -17
  372. data/lib/cyberweb/{objectified_html_tags/form.rb → objectified/html_tags/ul.rb} +45 -42
  373. data/lib/cyberweb/{objectified_html_tags → objectified/html_tags}/window.rb +15 -10
  374. data/lib/cyberweb/objectified/mask/README.md +8 -0
  375. data/lib/cyberweb/objectified/mask/compatibility_to_html_tags.rb +40 -0
  376. data/lib/cyberweb/objectified/mask/mask.rb +490 -0
  377. data/lib/cyberweb/objectified/web_object/README.md +4 -0
  378. data/lib/cyberweb/objectified/web_object/web_object.rb +119 -0
  379. data/lib/cyberweb/predefined_and_freeform_methods/frage.rb +4 -2
  380. data/lib/cyberweb/predefined_and_freeform_methods/freeform_methods.rb +30 -19
  381. data/lib/cyberweb/predefined_and_freeform_methods/hash_registered_extra_tags.rb +6 -0
  382. data/lib/cyberweb/predefined_and_freeform_methods/header.rb +2 -0
  383. data/lib/cyberweb/predefined_and_freeform_methods/predefined_methods.rb +10 -175
  384. data/lib/cyberweb/project/project.rb +9 -4
  385. data/lib/cyberweb/rack/request.rb +11 -11
  386. data/lib/cyberweb/raw_images/404.png +0 -0
  387. data/lib/cyberweb/raw_images/500.png +0 -0
  388. data/lib/cyberweb/raw_images/README.md +2 -0
  389. data/lib/cyberweb/raw_images/a_dice.png +0 -0
  390. data/lib/cyberweb/raw_images/food.png +0 -0
  391. data/lib/cyberweb/raw_images/ground.png +0 -0
  392. data/lib/cyberweb/requires/require_generators.rb +1 -1
  393. data/lib/cyberweb/requires/require_html_tags_files.rb +1 -1
  394. data/lib/cyberweb/requires/require_javascript_files.rb +1 -1
  395. data/lib/cyberweb/requires/require_objectified_html_tags_files.rb +29 -3
  396. data/lib/cyberweb/requires/require_the_constants.rb +3 -1
  397. data/lib/cyberweb/requires/require_the_cyberweb_project.rb +12 -31
  398. data/lib/cyberweb/requires/require_the_toplevel_methods_files.rb +1 -1
  399. data/lib/cyberweb/requires/require_web_object_files.rb +1 -1
  400. data/lib/cyberweb/requires/require_yaml.rb +3 -3
  401. data/lib/cyberweb/rest +1 -0
  402. data/lib/cyberweb/route_handler/class_based_test.rb +43 -0
  403. data/lib/cyberweb/route_handler/module/misc.rb +108 -0
  404. data/lib/cyberweb/route_handler/module/route_handler_module.rb +215 -0
  405. data/lib/cyberweb/route_handler/module/verbs.rb +53 -0
  406. data/lib/cyberweb/route_handler/route_handler.rb +56 -0
  407. data/lib/cyberweb/route_handler/test.rb +43 -0
  408. data/lib/cyberweb/{constants/array_predefined_constants.rb → sinatra/base/set_use_this_port.rb} +16 -9
  409. data/lib/cyberweb/sinatra/base/use_this_port.rb +40 -0
  410. data/lib/cyberweb/sinatra/base.rb +51 -36
  411. data/lib/cyberweb/sinatra/custom_extensions.rb +39 -14
  412. data/lib/cyberweb/standalone_classes/all_css_classes.rb +1 -1
  413. data/lib/cyberweb/standalone_classes/calculator.rb +7 -1
  414. data/lib/cyberweb/standalone_classes/correct_image_entries_in_html_file.rb +12 -7
  415. data/lib/cyberweb/standalone_classes/turn_html_into_cyberweb.rb +13 -11
  416. data/lib/cyberweb/svg/standalone/README.md +2 -0
  417. data/lib/cyberweb/svg/standalone/amusement_park.svg +738 -0
  418. data/lib/cyberweb/svg/svg.cgi +2 -3
  419. data/lib/cyberweb/toplevel_methods/a.rb +2 -1
  420. data/lib/cyberweb/toplevel_methods/anmerkung.rb +3 -0
  421. data/lib/cyberweb/toplevel_methods/audio.rb +1 -1
  422. data/lib/cyberweb/toplevel_methods/bold.rb +9 -3
  423. data/lib/cyberweb/toplevel_methods/charsets.rb +17 -13
  424. data/lib/cyberweb/toplevel_methods/consider_serving_the_web_object.rb +3 -3
  425. data/lib/cyberweb/toplevel_methods/css.rb +719 -25
  426. data/lib/cyberweb/{csv → toplevel_methods}/csv.rb +5 -3
  427. data/lib/cyberweb/{constants/roebe.rb → toplevel_methods/custom_error_page.rb} +10 -10
  428. data/lib/cyberweb/toplevel_methods/{date.rb → date_and_time.rb} +23 -10
  429. data/lib/cyberweb/toplevel_methods/disable.rb +7 -3
  430. data/lib/cyberweb/toplevel_methods/dot.rb +2 -2
  431. data/lib/cyberweb/toplevel_methods/download_webpage.rb +41 -3
  432. data/lib/cyberweb/toplevel_methods/edit_configuration_file.rb +1 -1
  433. data/lib/cyberweb/toplevel_methods/fields.rb +2 -0
  434. data/lib/cyberweb/toplevel_methods/filename.rb +3 -1
  435. data/lib/cyberweb/toplevel_methods/frames.rb +0 -2
  436. data/lib/cyberweb/toplevel_methods/google.rb +52 -0
  437. data/lib/cyberweb/{html_codes → toplevel_methods}/greek_letters.rb +22 -1
  438. data/lib/cyberweb/toplevel_methods/hardware_information.rb +2 -1
  439. data/lib/cyberweb/{help → toplevel_methods}/help.rb +3 -2
  440. data/lib/cyberweb/toplevel_methods/html_comment.rb +2 -2
  441. data/lib/cyberweb/toplevel_methods/html_tables.rb +401 -266
  442. data/lib/cyberweb/toplevel_methods/internal_hash.rb +173 -0
  443. data/lib/cyberweb/{io → toplevel_methods}/io.rb +1 -1
  444. data/lib/cyberweb/toplevel_methods/javascript.rb +42 -0
  445. data/lib/cyberweb/toplevel_methods/jquery.rb +8 -0
  446. data/lib/cyberweb/toplevel_methods/last_modified.rb +4 -0
  447. data/lib/cyberweb/toplevel_methods/links.rb +23 -7
  448. data/lib/cyberweb/toplevel_methods/listing.rb +2 -1
  449. data/lib/cyberweb/toplevel_methods/localhost.rb +3 -0
  450. data/lib/cyberweb/toplevel_methods/markdown.rb +3 -2
  451. data/lib/cyberweb/toplevel_methods/mathml.rb +5 -3
  452. data/lib/cyberweb/toplevel_methods/message_boxes.rb +6 -2
  453. data/lib/cyberweb/toplevel_methods/misc.rb +531 -79
  454. data/lib/cyberweb/toplevel_methods/padlem_and_marlem.rb +3 -0
  455. data/lib/cyberweb/toplevel_methods/path.rb +6 -1
  456. data/lib/cyberweb/toplevel_methods/pdf.rb +1 -1
  457. data/lib/cyberweb/toplevel_methods/process_content.rb +4 -7
  458. data/lib/cyberweb/toplevel_methods/progress.rb +6 -2
  459. data/lib/cyberweb/toplevel_methods/quote.rb +7 -1
  460. data/lib/cyberweb/toplevel_methods/random.rb +4 -1
  461. data/lib/cyberweb/toplevel_methods/rds.rb +14 -6
  462. data/lib/cyberweb/toplevel_methods/read_and_display.rb +3 -2
  463. data/lib/cyberweb/toplevel_methods/return_head_start.rb +1 -1
  464. data/lib/cyberweb/toplevel_methods/return_html_fin.rb +6 -3
  465. data/lib/cyberweb/toplevel_methods/return_html_header.rb +8 -3
  466. data/lib/cyberweb/toplevel_methods/return_html_start.rb +7 -2
  467. data/lib/cyberweb/toplevel_methods/return_meta_collection.rb +15 -4
  468. data/lib/cyberweb/toplevel_methods/return_pwd.rb +4 -0
  469. data/lib/cyberweb/toplevel_methods/return_strict_doctype.rb +8 -7
  470. data/lib/cyberweb/toplevel_methods/roebe.rb +6 -0
  471. data/lib/cyberweb/toplevel_methods/s2.rb +3 -1
  472. data/lib/cyberweb/toplevel_methods/sanitize_url.rb +7 -5
  473. data/lib/cyberweb/toplevel_methods/sbr.rb +7 -7
  474. data/lib/cyberweb/toplevel_methods/server_base_directory.rb +7 -3
  475. data/lib/cyberweb/toplevel_methods/show_and_display.rb +15 -15
  476. data/lib/cyberweb/toplevel_methods/show_configuration.rb +2 -2
  477. data/lib/cyberweb/toplevel_methods/spacer.rb +5 -2
  478. data/lib/cyberweb/toplevel_methods/svg.rb +62 -4
  479. data/lib/cyberweb/toplevel_methods/tag.rb +8 -2
  480. data/lib/cyberweb/toplevel_methods/temp_directory.rb +2 -2
  481. data/lib/cyberweb/toplevel_methods/textile.rb +2 -2
  482. data/lib/cyberweb/toplevel_methods/title.rb +14 -2
  483. data/lib/cyberweb/toplevel_methods/video.rb +3 -4
  484. data/lib/cyberweb/toplevel_methods/write_what_into.rb +2 -0
  485. data/lib/cyberweb/utility_scripts/README.md +3 -4
  486. data/lib/cyberweb/utility_scripts/autogenerate_drop_shadow_rules/autogenerate_drop_shadow_rules.rb +71 -0
  487. data/lib/cyberweb/utility_scripts/create_standalone_html_page.rb +223 -0
  488. data/lib/cyberweb/utility_scripts/download_all_images_from_this_website.rb +143 -0
  489. data/lib/cyberweb/utility_scripts/download_balloon_css.rb +1 -1
  490. data/lib/cyberweb/utility_scripts/fix_incorrect_links_to_locally_existing_images_in_this_file.rb +142 -0
  491. data/lib/cyberweb/utility_scripts/html_to_cyberweb_converter.rb +235 -0
  492. data/lib/cyberweb/utility_scripts/images_to_html/images_to_html.rb +878 -0
  493. data/lib/cyberweb/utility_scripts/images_to_html/misc.rb +62 -0
  494. data/lib/cyberweb/utility_scripts/new_tags.rb +105 -0
  495. data/lib/cyberweb/utility_scripts/simple_index/README.md +9 -0
  496. data/lib/cyberweb/utility_scripts/simple_index/simple_index.rb +149 -0
  497. data/lib/cyberweb/version/version.rb +2 -2
  498. data/lib/cyberweb/vue/README.md +2 -0
  499. data/lib/cyberweb/vue/vue.rb +91 -0
  500. data/lib/cyberweb/web_images/array_listing_all_project_images.rb +1 -1
  501. data/lib/cyberweb/web_images/map_symbol_to_image_location.rb +60 -4
  502. data/lib/cyberweb/web_images/web_images.rb +37 -20
  503. data/lib/cyberweb/{constants/array_images.rb → web_object/display_output_and_report.rb} +11 -10
  504. data/lib/cyberweb/web_object/english.rb +55 -0
  505. data/lib/cyberweb/web_object/favicon.rb +103 -22
  506. data/lib/cyberweb/web_object/html_tags.rb +1433 -0
  507. data/lib/cyberweb/web_object/images.rb +428 -398
  508. data/lib/cyberweb/web_object/{javascript.rb → javascript_and_jquery.rb} +174 -276
  509. data/lib/cyberweb/web_object/{links.rb → link.rb} +185 -83
  510. data/lib/cyberweb/web_object/misc.rb +3934 -3928
  511. data/lib/cyberweb/web_object/reset.rb +153 -67
  512. data/lib/cyberweb/web_object/run.rb +1 -1
  513. data/lib/cyberweb/web_object/web_object.rb +3690 -49
  514. data/lib/cyberweb/web_scraper/scrape_this_url.rb +4 -2
  515. data/lib/cyberweb/webmin/biology_server.cgi +14 -15
  516. data/lib/cyberweb/webmin/calculator.cgi +2 -2
  517. data/lib/cyberweb/webmin/colour_chart.cgi +4 -5
  518. data/lib/cyberweb/webmin/comments.cgi +8 -7
  519. data/lib/cyberweb/webmin/comments_data +0 -0
  520. data/lib/cyberweb/webmin/constants.rb +1 -2
  521. data/lib/cyberweb/webmin/dictionary.cgi +3 -4
  522. data/lib/cyberweb/webmin/sys_info.cgi +1 -2
  523. data/lib/cyberweb/webmin/webforum.cgi +1 -2
  524. data/lib/cyberweb/webmin/webmin.cgi +2 -3
  525. data/lib/cyberweb/yaml/autogenerated_system_settings.yml +10 -10
  526. data/lib/cyberweb/yaml/custom_tags.yml +1 -1
  527. data/lib/cyberweb/yaml/html5_global_attributes.yml +5 -1
  528. data/lib/cyberweb/yaml/html_tag_legend.yml +2 -0
  529. data/lib/cyberweb/yaml/http_status_codes.yml +4 -1
  530. data/lib/cyberweb/yaml/load_these_yaml_files_by_default.yml +29 -0
  531. data/lib/cyberweb/yaml/project_configuration.yml +42 -31
  532. data/lib/cyberweb/yaml/video_attributes.yml +2 -0
  533. data/lib/cyberweb/yaml/web_images.yml +1 -1
  534. data/test/REST/simple.rb +7 -0
  535. data/test/complex_tests/simple_sinatra_example_using_cyberweb/simple.rb +1 -1
  536. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.cgi +1 -1
  537. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.rb +4 -4
  538. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.sinatra +1 -2
  539. data/test/complex_tests/testing_frames.cgi +3 -5
  540. data/test/complex_tests/testing_objectified_html_tags/testing_objectified_html_tags.html +28 -0
  541. data/test/complex_tests/testing_objectified_html_tags/testing_objectified_html_tags.rb +175 -0
  542. data/test/complex_tests/testing_style_variants/show_coloured_boxes.cgi +11 -7
  543. data/test/complex_tests/testing_tables.cgi +3 -3
  544. data/test/complex_tests/testing_the_cyberweb_shell.rb +2 -0
  545. data/test/complex_tests/testing_web_object.rb +5 -2
  546. data/test/css/README.md +4 -3
  547. data/test/css/return_the_content_of_these_css_classes.rb +5 -1
  548. data/test/css/test_hover_css/test_hover_css.cgi +59 -0
  549. data/test/css/test_ordered_list/test_ordered_list.cgi +31 -0
  550. data/test/css/testing_css_effects.cgi +3 -4
  551. data/test/css/testing_css_masking.cgi +3 -4
  552. data/test/hello_world/hello_world.cgi +6 -4
  553. data/test/html_template/html_template.rb +15 -0
  554. data/test/javascript/testing_custom_functions.js +24 -0
  555. data/test/javascript/testing_drag_and_drop_support.cgi +1 -1
  556. data/test/javascript/testing_on_click_change_opacity.cgi +4 -5
  557. data/test/javascript/testing_snowflakes.cgi +2 -2
  558. data/test/simple_tests/ad-hoc-test.cgi +5 -2
  559. data/test/simple_tests/cgi/hello_world_with_cyberweb.cgi +14 -0
  560. data/test/simple_tests/commandline_tests.rb +21 -15
  561. data/test/simple_tests/display_this_file.cgi +2 -2
  562. data/test/simple_tests/simple_html_example.cgi +2 -1
  563. data/test/simple_tests/simple_html_test_page/simple_html_test_page.html +20 -0
  564. data/test/simple_tests/simple_status_page.cgi +2 -2
  565. data/test/simple_tests/string_s2_test.rb +5 -0
  566. data/test/simple_tests/test_simple_string_as_input.rb +3 -1
  567. data/test/simple_tests/testing_base64_images.cgi +3 -4
  568. data/test/simple_tests/testing_checkboxes.cgi +22 -0
  569. data/test/simple_tests/testing_dragging_an_image.cgi +5 -6
  570. data/test/simple_tests/testing_editable_text.cgi +2 -3
  571. data/test/simple_tests/testing_email.cgi +6 -7
  572. data/test/simple_tests/testing_embedding_a_pdf_file.cgi +5 -5
  573. data/test/simple_tests/testing_google_charts.cgi +3 -3
  574. data/test/simple_tests/testing_html_forms.cgi +3 -3
  575. data/test/simple_tests/testing_html_template.rb +2 -0
  576. data/test/simple_tests/testing_popup_div.cgi +2 -3
  577. data/test/simple_tests/testing_return_dataset_without_any_comments.rb +3 -1
  578. data/test/simple_tests/testing_the_cap_box.cgi +3 -4
  579. data/test/simple_tests/testing_the_div_tag.cgi +3 -4
  580. data/test/simple_tests/testing_the_headers_tag.cgi +3 -4
  581. data/test/simple_tests/testing_the_html_colours.cgi +2 -3
  582. data/test/simple_tests/testing_the_info_box.cgi +2 -3
  583. data/test/simple_tests/testing_the_li_tag.cgi +2 -1
  584. data/test/simple_tests/testing_the_s2_method.rb +6 -1
  585. data/test/simple_tests/testing_the_select_tag.cgi +16 -8
  586. data/test/simple_tests/testing_the_span_tag.cgi +2 -3
  587. data/test/simple_tests/testing_web_images.rb +4 -2
  588. data/test/testing_html_tags/button_example.cgi +6 -7
  589. metadata +345 -151
  590. data/doc/CONVENTIONS.md +0 -7
  591. data/doc/CYBERWEB_TUTORIAL.cgi +0 -43
  592. data/doc/FUTURE_DESIGN_GOAL_CONSIDERATIONS.md +0 -13
  593. data/doc/todo/TODO_FOR_THE_CYBERWEB_PROJECT.md +0 -1089
  594. data/examples/css/shadow_example_in_CSS.cgi +0 -30
  595. data/lib/cyberweb/charts/README.md +0 -2
  596. data/lib/cyberweb/charts/google_charts.rb +0 -51
  597. data/lib/cyberweb/colours/random_colour.rb +0 -28
  598. data/lib/cyberweb/colours/sanitize_for_colours.rb +0 -95
  599. data/lib/cyberweb/constants/array_local_css_files.rb +0 -35
  600. data/lib/cyberweb/constants/configuration_file.rb +0 -33
  601. data/lib/cyberweb/constants/http_status_codes.rb +0 -42
  602. data/lib/cyberweb/constants/project_constants.rb +0 -99
  603. data/lib/cyberweb/constants/standalone_constants.rb +0 -309
  604. data/lib/cyberweb/csv/README.md +0 -2
  605. data/lib/cyberweb/generator/webpage_for_images.rb +0 -553
  606. data/lib/cyberweb/html_codes/README.md +0 -15
  607. data/lib/cyberweb/images/real/README.md +0 -6
  608. data/lib/cyberweb/io/README.md +0 -1
  609. data/lib/cyberweb/javascript/scroll.rb +0 -17
  610. data/lib/cyberweb/objectified_html_tags/README.md +0 -8
  611. data/lib/cyberweb/objectified_html_tags/base.rb +0 -376
  612. data/lib/cyberweb/predefined_and_freeform_methods/hash_css_class_to_use.rb +0 -55
  613. data/lib/cyberweb/requires/require_charts.rb +0 -20
  614. data/lib/cyberweb/web_object/css.rb +0 -627
  615. data/lib/cyberweb/web_object/evaluate.rb +0 -126
  616. data/lib/cyberweb/web_object/html_related_tags.rb +0 -320
  617. data/lib/cyberweb/web_object/initialize.rb +0 -51
  618. data/lib/cyberweb/web_object/input_related_functionality.rb +0 -414
  619. data/lib/cyberweb/web_object/languages.rb +0 -172
  620. data/lib/cyberweb/web_object/params.rb +0 -289
  621. data/lib/cyberweb/web_object/sinatra_related_functionality.rb +0 -30
  622. data/lib/cyberweb/web_object/sitemap.rb +0 -176
  623. data/lib/cyberweb/web_object/table.rb +0 -378
  624. data/test/complex_tests/testing_objectified_html_tags.rb +0 -82
  625. data/test/javascript/testing_cheerleader_javascript.cgi +0 -0
@@ -0,0 +1,960 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === Cyberweb::Objectified::HtmlTags::Base
6
+ # =========================================================================== #
7
+ # require 'cyberweb/objectified/html_tags/base.rb'
8
+ # < Cyberweb::Objectified::HtmlTags::Base
9
+ # =========================================================================== #
10
+ module Cyberweb
11
+
12
+ module Objectified
13
+
14
+ module HtmlTags
15
+
16
+ # # =========================================================================== #
17
+ # # === Cyberweb::Objectified::HtmlTags.print_or_return
18
+ # #
19
+ # # This is currently not implemented - the idea was to either return a
20
+ # # String or display it at once. It will most likely be removed at
21
+ # # a later point in time. For now (February 2022) it will remain here.
22
+ # # =========================================================================== #
23
+ # def self.print_or_return(i = :return)
24
+ # @print_or_return = i
25
+ # end
26
+ #
27
+ # print_or_return(:return)
28
+ #
29
+ # # =========================================================================== #
30
+ # # === Cyberweb::Objectified::HtmlTags.print_or_return?
31
+ # # =========================================================================== #
32
+ # def self.print_or_return?
33
+ # @print_or_return
34
+ # end
35
+
36
+ class Base # === Cyberweb::Objectified::HtmlTags::Base
37
+
38
+ require 'cyberweb/project/project.rb'
39
+ require 'cyberweb/constants/constants.rb'
40
+ require 'cyberweb/css_manager/css_manager.rb'
41
+
42
+ # ========================================================================= #
43
+ # === reset (reset tag)
44
+ # ========================================================================= #
45
+ def reset
46
+ # ======================================================================= #
47
+ # === @result
48
+ #
49
+ # This is the String that will be output / stored.
50
+ # ======================================================================= #
51
+ @result = ''.dup
52
+ # ======================================================================= #
53
+ # === @content
54
+ # ======================================================================= #
55
+ @content = ''.dup
56
+ # ======================================================================= #
57
+ # === @internal_hash
58
+ #
59
+ # This Hash keeps useful entries.
60
+ # ======================================================================= #
61
+ @internal_hash = {}
62
+ # ======================================================================= #
63
+ # === :is_draggable
64
+ # ======================================================================= #
65
+ @internal_hash[:is_draggable] = false
66
+ # ======================================================================= #
67
+ # === :id
68
+ # ======================================================================= #
69
+ @internal_hash[:id] = nil
70
+ # ======================================================================= #
71
+ # === :title
72
+ #
73
+ # Must be nil initially.
74
+ # ======================================================================= #
75
+ @internal_hash[:title] = nil
76
+ # ======================================================================= #
77
+ # === :script
78
+ # ======================================================================= #
79
+ @internal_hash[:script] = ''.dup
80
+ # ======================================================================= #
81
+ # === :in_tag_script
82
+ # ======================================================================= #
83
+ @internal_hash[:in_tag_script] = ''.dup
84
+ # ======================================================================= #
85
+ # === :pre_content
86
+ # ======================================================================= #
87
+ @internal_hash[:pre_content] = ''.dup
88
+ # ======================================================================= #
89
+ # === :css_class
90
+ # ======================================================================= #
91
+ @internal_hash[:css_class] = ''.dup
92
+ # ======================================================================= #
93
+ # === :css_style
94
+ # ======================================================================= #
95
+ @internal_hash[:css_style] = ''.dup
96
+ end
97
+
98
+ # ========================================================================= #
99
+ # === on_hover_colour
100
+ #
101
+ # Note that this depends on corresponding CSS classes - if you do not
102
+ # define them then this is basically useless.
103
+ #
104
+ # The cyberweb project comes with these CSS classes bundled; or, if they
105
+ # are missing then they can be added still.
106
+ #
107
+ # Usage example:
108
+ #
109
+ # button.on_hover_colour(:steelblue)
110
+ #
111
+ # ========================================================================= #
112
+ def on_hover_colour(
113
+ use_this_colour = :steelblue
114
+ )
115
+ append_css_class('on_hover_colour_'+use_this_colour.to_s)
116
+ end
117
+
118
+ # ========================================================================= #
119
+ # === on_mouse_hover
120
+ #
121
+ # This method will be triggered on a mouse-hover event.
122
+ # ========================================================================= #
123
+ def on_mouse_hover(&block)
124
+ # ======================================================================= #
125
+ # === Handle blocks first
126
+ # ======================================================================= #
127
+ if block_given?
128
+ yielded = yield
129
+ # ===================================================================== #
130
+ # === Handle Hashes next
131
+ # ===================================================================== #
132
+ if yielded.is_a? Hash
133
+ # =================================================================== #
134
+ # === :bg
135
+ #
136
+ # This used to be hardcoded to white background. This should
137
+ # eventually become the background colour that was assigned,
138
+ # though.
139
+ #
140
+ # In January 2022 this method will check for a :fg entry. If this
141
+ # exits then it is used instead. White will still remain the
142
+ # default, though.
143
+ # =================================================================== #
144
+ if yielded.has_key? :bg
145
+ use_this_as_the_background_colour = 'white'
146
+ # ================================================================= #
147
+ # === :fg
148
+ #
149
+ # To enter this clause use a string such as the following:
150
+ #
151
+ # div.on_mouse_hover {{ bg: :orange, fg: :lightblue }}
152
+ #
153
+ # ================================================================= #
154
+ if yielded.has_key? :fg
155
+ use_this_as_the_background_colour = yielded[:fg].to_s
156
+ end
157
+ if css_class? and css_class?.include?('BG_')
158
+ regex_to_use = /BG_(\w+)/ # See: https://rubular.com/r/3U0Xj10NUUAtOM
159
+ css_class? =~ regex_to_use # Apply the regex here.
160
+ use_this_as_the_background_colour = $1.to_s.dup
161
+ end
162
+ @internal_hash[:in_tag_script] <<
163
+ 'onmouseover="this.style.background=\''+yielded[:bg].to_s+'\';" '\
164
+ 'onmouseout="this.style.background=\''+use_this_as_the_background_colour+'\';"'
165
+ end
166
+ end
167
+ end
168
+ end; alias on_mouse_over on_mouse_hover # === on_mouse_over
169
+
170
+ # ========================================================================= #
171
+ # === project_base_dir?
172
+ # ========================================================================= #
173
+ def project_base_dir?
174
+ ::Cyberweb.project_base_dir?
175
+ end
176
+
177
+ # ========================================================================= #
178
+ # === name?
179
+ # ========================================================================= #
180
+ def name?
181
+ @internal_hash[:name].to_s
182
+ end
183
+
184
+ # ========================================================================= #
185
+ # === name=
186
+ #
187
+ # Note that this setter-method will not work for every tag.
188
+ #
189
+ # Usage example:
190
+ #
191
+ # object.name = 'ask_a_question'
192
+ #
193
+ # ========================================================================= #
194
+ def name=(i)
195
+ @internal_hash[:name] = i
196
+ end; alias set_name name= # === set_Name
197
+
198
+ # ========================================================================= #
199
+ # === set_id
200
+ #
201
+ # This method allows the user to set a specific id for the HTML object
202
+ # at hand, such as a <div> tag.
203
+ #
204
+ # Note that there is an alias to this setter-method, called id(). This
205
+ # alias exists mostly as a convenience shortcut and it is not absolutely
206
+ # 100% certain that this method name will be retained as-is - after all
207
+ # it could be synonymous to .id?, and some users may expect it to be
208
+ # like this (e. g. .id()). Thus, if you want to be absolutely certain,
209
+ # it is recommended to use either set_id() or id=(), since the behaviour
210
+ # may change one day. This notice here was written in January of 2022.
211
+ # ========================================================================= #
212
+ def set_id(i = nil)
213
+ @internal_hash[:id] = i
214
+ end; alias id set_id # === id
215
+ alias id= set_id # === id=
216
+
217
+ # ========================================================================= #
218
+ # === id?
219
+ #
220
+ # This method will return the value for the ID of the given HTML tag at
221
+ # hand.
222
+ # ========================================================================= #
223
+ def id?
224
+ @internal_hash[:id]
225
+ end
226
+
227
+ # ========================================================================= #
228
+ # === is_draggable
229
+ # ========================================================================= #
230
+ def is_draggable
231
+ @internal_hash[:is_draggable] = true
232
+ end
233
+
234
+ # ========================================================================= #
235
+ # === is_draggable?
236
+ # ========================================================================= #
237
+ def is_draggable?
238
+ @internal_hash[:is_draggable]
239
+ end
240
+
241
+ # ========================================================================= #
242
+ # === bblack1
243
+ # ========================================================================= #
244
+ def bblack1
245
+ unless @internal_hash[:css_class].include? 'bblack1'
246
+ @internal_hash[:css_class] << ' bblack1'
247
+ end
248
+ end
249
+
250
+ # ========================================================================= #
251
+ # === bblack2
252
+ # ========================================================================= #
253
+ def bblack2
254
+ @internal_hash[:css_class] << ' bblack2' unless @internal_hash[:css_class].include? 'bblack2'
255
+ end
256
+
257
+ # ========================================================================= #
258
+ # === very_light_yellowish_background
259
+ # ========================================================================= #
260
+ def very_light_yellowish_background
261
+ @internal_hash[:css_class] << ' BG_very_light_yellowish'
262
+ end
263
+
264
+ # ========================================================================= #
265
+ # === bblack3
266
+ # ========================================================================= #
267
+ def bblack3
268
+ @internal_hash[:css_class] << ' bblack3' unless @internal_hash[:css_class].include? 'bblack3'
269
+ end
270
+
271
+ # ========================================================================= #
272
+ # === bblack4
273
+ # ========================================================================= #
274
+ def bblack4
275
+ @internal_hash[:css_class] << ' bblack4' unless @internal_hash[:css_class].include? 'bblack4'
276
+ end
277
+
278
+ # ========================================================================= #
279
+ # === bblack5
280
+ # ========================================================================= #
281
+ def bblack5
282
+ @internal_hash[:css_class] << ' bblack5' unless @internal_hash[:css_class].include? 'bblack5'
283
+ end
284
+
285
+ # ========================================================================= #
286
+ # === bblack6
287
+ # ========================================================================= #
288
+ def bblack6
289
+ @internal_hash[:css_class] << ' bblack6' unless @internal_hash[:css_class].include? 'bblack6'
290
+ end
291
+
292
+ # ========================================================================= #
293
+ # === pad
294
+ # ========================================================================= #
295
+ def pad
296
+ @internal_hash[:css_style].rstrip!
297
+ @internal_hash[:css_style] << ' pad0_5em'
298
+ end
299
+
300
+ # ========================================================================= #
301
+ # === return_css_style
302
+ # ========================================================================= #
303
+ def return_css_style(
304
+ i = css_style?
305
+ )
306
+ return 'style="'+i.to_s.strip+'"'
307
+ end
308
+
309
+ # ========================================================================= #
310
+ # === return_css_class
311
+ # ========================================================================= #
312
+ def return_css_class(
313
+ i = css_class?
314
+ )
315
+ return 'class="'+i.to_s.strip+'"'
316
+ end
317
+
318
+ # ========================================================================= #
319
+ # === css_class?
320
+ # ========================================================================= #
321
+ def css_class?
322
+ @internal_hash[:css_class]
323
+ end
324
+
325
+ # ========================================================================= #
326
+ # === pad1px
327
+ # ========================================================================= #
328
+ def pad1px
329
+ @internal_hash[:css_class].rstrip!
330
+ @internal_hash[:css_class] << ' pad1px'
331
+ end
332
+
333
+ # ========================================================================= #
334
+ # === pad2px
335
+ # ========================================================================= #
336
+ def pad2px
337
+ @internal_hash[:css_class].rstrip!
338
+ @internal_hash[:css_class] << ' pad2px'
339
+ end
340
+
341
+ # ========================================================================= #
342
+ # === pad3px
343
+ # ========================================================================= #
344
+ def pad3px
345
+ @internal_hash[:css_class].rstrip!
346
+ @internal_hash[:css_class] << ' pad3px'
347
+ end
348
+
349
+ # ========================================================================= #
350
+ # === pad4px
351
+ # ========================================================================= #
352
+ def pad4px
353
+ @internal_hash[:css_class].rstrip!
354
+ @internal_hash[:css_class] << ' pad4px'
355
+ end
356
+
357
+ # ========================================================================= #
358
+ # === pad5px
359
+ # ========================================================================= #
360
+ def pad5px
361
+ @internal_hash[:css_class].rstrip!
362
+ @internal_hash[:css_class] << ' pad5px'
363
+ end
364
+
365
+ # ========================================================================= #
366
+ # === pad6px
367
+ # ========================================================================= #
368
+ def pad6px
369
+ @internal_hash[:css_class].rstrip!
370
+ @internal_hash[:css_class] << ' pad6px'
371
+ end
372
+
373
+ # ========================================================================= #
374
+ # === pad7px
375
+ # ========================================================================= #
376
+ def pad7px
377
+ @internal_hash[:css_class].rstrip!
378
+ @internal_hash[:css_class] << ' pad7px'
379
+ end
380
+
381
+ # ========================================================================= #
382
+ # === pad8px
383
+ # ========================================================================= #
384
+ def pad8px
385
+ @internal_hash[:css_class].rstrip!
386
+ @internal_hash[:css_class] << ' pad8px'
387
+ end
388
+
389
+ # ========================================================================= #
390
+ # === pad9px
391
+ # ========================================================================= #
392
+ def pad9px
393
+ @internal_hash[:css_class].rstrip!
394
+ @internal_hash[:css_class] << ' pad9px'
395
+ end
396
+
397
+ # ========================================================================= #
398
+ # === pad10px
399
+ # ========================================================================= #
400
+ def pad10px
401
+ @internal_hash[:css_class].rstrip!
402
+ @internal_hash[:css_class] << ' pad10px'
403
+ end
404
+
405
+ # ========================================================================= #
406
+ # === set_title
407
+ # ========================================================================= #
408
+ def set_title(i)
409
+ @internal_hash[:title] = i
410
+ end
411
+
412
+ # ========================================================================= #
413
+ # === title?
414
+ #
415
+ # This method must be guaranteed to return a String. Keep in mind
416
+ # that the title may be empty, though, so it is best to check in
417
+ # the downstream code base whether a title-tag was set or not.
418
+ # ========================================================================= #
419
+ def title?
420
+ @internal_hash[:title].to_s
421
+ end
422
+
423
+ # ========================================================================= #
424
+ # === css_style?
425
+ # ========================================================================= #
426
+ def css_style?
427
+ @internal_hash[:css_style]
428
+ end
429
+
430
+ # ========================================================================= #
431
+ # === set_css_style
432
+ # ========================================================================= #
433
+ def set_css_style(i)
434
+ @internal_hash[:css_style] = i
435
+ end; alias style= set_css_style # === style=
436
+ alias css_style= set_css_style # === css_style=
437
+ alias style set_css_style # === style
438
+ alias css_style set_css_style # === css_style
439
+ alias set_CSS_style set_css_style # === set_CSS_style
440
+
441
+ # ========================================================================= #
442
+ # === path_to_internal_javascript_file
443
+ #
444
+ # This method can be used like this:
445
+ #
446
+ # path_to_internal_javascript_file 'disable_right_click.js'
447
+ #
448
+ # ========================================================================= #
449
+ def path_to_internal_javascript_file(i)
450
+ return "#{project_base_dir?}javascript_code/#{i}"
451
+ end
452
+
453
+ # ========================================================================= #
454
+ # === on_click_select
455
+ #
456
+ # This is a "shortcut" for selecting everything on an on-click event
457
+ # action.
458
+ # ========================================================================= #
459
+ def on_click_select
460
+ on_clicked { :select_everything }
461
+ end; alias on_clicked_select on_click_select # === on_clicked_select
462
+
463
+ # ========================================================================= #
464
+ # === return_javascript
465
+ # ========================================================================= #
466
+ def return_javascript(i)
467
+ return "\n<script>\n#{i}\n</script>\n"
468
+ end
469
+
470
+ # ========================================================================= #
471
+ # === add_this_to_javascript
472
+ #
473
+ # Use this method to add to the javascript <script> tag.
474
+ # ========================================================================= #
475
+ def add_this_to_javascript(i)
476
+ if @internal_hash[:script].nil?
477
+ @internal_hash[:script] = ''.dup
478
+ end
479
+ @internal_hash[:script] << i
480
+ end
481
+
482
+ # ========================================================================= #
483
+ # === is_an_objectified_html_tag?
484
+ # ========================================================================= #
485
+ def is_an_objectified_html_tag?
486
+ true
487
+ end
488
+
489
+ # ========================================================================= #
490
+ # === append_onto_the_css_class
491
+ #
492
+ # This method will append onto the CSS classes in use.
493
+ # ========================================================================= #
494
+ def append_onto_the_css_class(i)
495
+ @internal_hash[:css_class] << " #{i}"
496
+ @internal_hash[:css_class].strip!
497
+ end; alias acss append_onto_the_css_class # === acss
498
+ alias append_to_css_class append_onto_the_css_class # === append_to_css_class
499
+ alias append_css_class append_onto_the_css_class # === append_css_class
500
+ alias add_to_CSS_classes append_onto_the_css_class # === add_to_CSS_classes
501
+ alias add_this_CSS_class append_onto_the_css_class # === add_this_CSS_class
502
+
503
+ # ========================================================================= #
504
+ # === on_clicked
505
+ # ========================================================================= #
506
+ def on_clicked(&block)
507
+ # ======================================================================= #
508
+ # === Handle blocks first
509
+ # ======================================================================= #
510
+ if block_given?
511
+ yielded = yield
512
+ # ===================================================================== #
513
+ # === Handle Symbols next
514
+ #
515
+ # Some Symbols have a special meaning. For instance, the Symbol
516
+ # :select_everything will select everything in the given HTML
517
+ # tag at hand.
518
+ # ===================================================================== #
519
+ if yielded.is_a? Symbol
520
+ case yielded
521
+ # =================================================================== #
522
+ # === :select_everything
523
+ # =================================================================== #
524
+ when :select_everything
525
+ @internal_hash[:onclick] = 'selectText(this.id)'
526
+ # ================================================================= #
527
+ # We also have to pull in the javascript file.
528
+ # ================================================================= #
529
+ _ = path_to_internal_javascript_file('select_everything_on_mouse_click_event.js')
530
+ if File.exist? _
531
+ @internal_hash[:script] << return_javascript(File.read(_))
532
+ else
533
+ puts "No file exists at #{_}"
534
+ end
535
+ end
536
+ # ===================================================================== #
537
+ # === Handle Hashes past this point
538
+ # ===================================================================== #
539
+ elsif yielded.is_a? Hash
540
+ # =================================================================== #
541
+ # === :javascript_pop_up
542
+ # =================================================================== #
543
+ if yielded.has_key? :javascript_pop_up
544
+ text_to_use = yielded.delete(:javascript_pop_up).to_s
545
+ @internal_hash[:onclick] = 'pop_up_this_text()'
546
+ @internal_hash[:script] << return_javascript(
547
+ 'function pop_up_this_text() {
548
+ window.alert("'+text_to_use+'!");
549
+ }'
550
+ )
551
+ # =================================================================== #
552
+ # === :javascript_call
553
+ # =================================================================== #
554
+ elsif yielded.has_key? :javascript_call
555
+ @internal_hash[:onclick] = 'some_foobar()'
556
+ end
557
+ end
558
+ end
559
+ end
560
+
561
+ # ========================================================================= #
562
+ # === script?
563
+ # ========================================================================= #
564
+ def script?
565
+ @internal_hash[:script]
566
+ end
567
+
568
+ # ========================================================================= #
569
+ # === set_content
570
+ #
571
+ # Store the content of the HTML tag at hand via the following method.
572
+ #
573
+ # Note that Arrays that are passed into this method will NOT become
574
+ # Strings. The reason why that is the case is that some HTML elements,
575
+ # such as the html-dropbox, need an Array as input, not a String.
576
+ # Thus we would lose information if we were to ignore Arrays as
577
+ # input.
578
+ #
579
+ # This method currently has three aliases, but it is not certain
580
+ # whether these will be retained (comment here made in October 2021) -
581
+ # the future will show how useful these are.
582
+ #
583
+ # Note that the alias .text= was added in November 2021. I am not
584
+ # entirely certain whether it will be retained, but for now it is
585
+ # available.
586
+ # ========================================================================= #
587
+ def set_content(i)
588
+ if i.is_a? Hash
589
+ # ===================================================================== #
590
+ # === :id
591
+ #
592
+ # Invocation example:
593
+ #
594
+ # create_entry2 id: 'entry_main_file'
595
+ #
596
+ # ===================================================================== #
597
+ if i.has_key? :id
598
+ set_id(i.delete(:id))
599
+ end
600
+ # ===================================================================== #
601
+ # === :class
602
+ # ===================================================================== #
603
+ if i.has_key? :class
604
+ set_CSS_class(i.delete(:class))
605
+ end
606
+ end
607
+ if i.is_a?(Hash) and i.empty?
608
+ i = ''
609
+ end
610
+ i = i.to_s.dup unless i.is_a? Array
611
+ @content = i
612
+ end; alias inject set_content # === inject
613
+ alias value= set_content # === value?
614
+ alias << set_content # === <<
615
+ alias text= set_content # === text=
616
+ alias content= set_content # === content=
617
+
618
+ # ========================================================================= #
619
+ # === method_missing?
620
+ #
621
+ # Arguments explained:
622
+ #
623
+ # The first is the name of the method you were trying to call.
624
+ # The second is the args (*args) that were passed to the method.
625
+ # The third is a block (&block) that was passed to the method.
626
+ #
627
+ # ========================================================================= #
628
+ def method_missing(
629
+ name_of_the_method, *args, &block
630
+ )
631
+ if ::Cyberweb.is_a_registered_html_tag?(name_of_the_method.to_s)
632
+ oop_name = "oop_#{name_of_the_method}"
633
+ result = send(oop_name.to_sym, args, &block).to_s
634
+ result = result.first if result.is_a? Array
635
+ append_onto_content(result)
636
+ else
637
+ super(name_of_the_method, args, &block)
638
+ end
639
+ end
640
+
641
+ # ========================================================================= #
642
+ # === attach (attach tag, add tag)
643
+ #
644
+ # This method will simply append to @content.
645
+ # ========================================================================= #
646
+ def attach(i)
647
+ i = i.join(' ').strip if i.is_a? Array
648
+ if i.is_a? Symbol
649
+ # ===================================================================== #
650
+ # Symbols are treated as method calls.
651
+ # ===================================================================== #
652
+ i = send(i)
653
+ end
654
+ i = i.to_s
655
+ @content = @content.dup if @content.frozen?
656
+ @content << i
657
+ end; alias add attach # === attach
658
+ alias append_to_content attach # === append_to_content
659
+ alias append_onto_content attach # === append_onto_content
660
+
661
+ # ========================================================================= #
662
+ # === append_the_content
663
+ # ========================================================================= #
664
+ def append_the_content(
665
+ content = @content,
666
+ append_to = @result
667
+ )
668
+ if content.is_a? Array
669
+ content.each {|entry|
670
+ append_to << "#{entry}\n"
671
+ }
672
+ else
673
+ append_to << content
674
+ end
675
+ end
676
+
677
+ # ========================================================================= #
678
+ # === return_appendable_content
679
+ #
680
+ # This will return the @content as a String.
681
+ # ========================================================================= #
682
+ def return_appendable_content
683
+ result = ''.dup
684
+ if @content.is_a? Array
685
+ @content.each {|entry|
686
+ result << "#{entry}\n"
687
+ }
688
+ else
689
+ result << content
690
+ end
691
+ return result
692
+ end; alias appendable_content return_appendable_content # === appendable_content
693
+
694
+ # ========================================================================= #
695
+ # === consider_adding_the_script_entry_from_the_internal_hash
696
+ # ========================================================================= #
697
+ def consider_adding_the_script_entry_from_the_internal_hash
698
+ script = script?
699
+ if script and !script.empty?
700
+ @result << script
701
+ end
702
+ end
703
+
704
+ # ========================================================================= #
705
+ # === Cyberweb::Objectified::HtmlTags::Base.report (report tag)
706
+ #
707
+ # This method can be used to quickly display the content of the OOP
708
+ # HTML tag at hand.
709
+ #
710
+ # Usage example:
711
+ #
712
+ # Cyberweb::Objectified::HtmlTags::Title.report('This is a HTML website.')
713
+ # Cyberweb::Objectified::HtmlTags::Abbr.report('tRNA','transfer RNA')
714
+ #
715
+ # ========================================================================= #
716
+ def self.report(
717
+ i, optional_arguments = nil
718
+ )
719
+ use_this_class = Cyberweb::Objectified::HtmlTags.const_get(inspect)
720
+ n_arguments = use_this_class.instance_method(:initialize).parameters.size
721
+ case n_arguments
722
+ when 1
723
+ print use_this_class.new(i).to_str
724
+ when 2
725
+ print use_this_class.new(i, optional_arguments).to_str
726
+ else
727
+ raise StandardError.new('Unhandled number of parameters.')
728
+ end
729
+ end
730
+
731
+ # ========================================================================= #
732
+ # === pre_content?
733
+ # ========================================================================= #
734
+ def pre_content?
735
+ @internal_hash[:pre_content]
736
+ end
737
+
738
+ # ========================================================================= #
739
+ # === consider_adding_the_pre_content
740
+ # ========================================================================= #
741
+ def consider_adding_the_pre_content
742
+ @result << pre_content?
743
+ end
744
+
745
+ # ========================================================================= #
746
+ # === content?
747
+ # ========================================================================= #
748
+ def content?
749
+ if @content.is_a? Array # Arrays are allowed - everything else will be a String.
750
+ @content
751
+ else
752
+ @content.to_s # Ensure the result to be a String here.
753
+ end
754
+ end
755
+
756
+ # ========================================================================= #
757
+ # === content_as_string
758
+ #
759
+ # This method makes sure that we return a String.
760
+ # ========================================================================= #
761
+ def content_as_string
762
+ _ = @content
763
+ _ = _.first if _.is_a? Array
764
+ return _.to_s # Ensure that it is a String here.
765
+ end
766
+
767
+ # ========================================================================= #
768
+ # === to_str
769
+ # ========================================================================= #
770
+ def to_str
771
+ rebuild_the_result
772
+ @result
773
+ end; alias to_s to_str # === to_s
774
+ alias string? to_str # === string?
775
+ alias result? to_str # === result?
776
+
777
+ # ========================================================================= #
778
+ # === add_to_pre_content
779
+ #
780
+ # This method will, by default, always append a newline.
781
+ # ========================================================================= #
782
+ def add_to_pre_content(
783
+ i, append_a_newline = true
784
+ )
785
+ if append_a_newline
786
+ i << "\n"
787
+ end
788
+ @internal_hash[:pre_content] << i
789
+ end; alias add_to_the_pre_content add_to_pre_content # === add_to_the_pre_content
790
+
791
+ # ========================================================================= #
792
+ # === set_css_class
793
+ #
794
+ # Usage example:
795
+ #
796
+ # textarea.class = 'rounded_border_6px bblack1 FS2em pad8px'
797
+ #
798
+ # ========================================================================= #
799
+ def set_css_class(i)
800
+ @internal_hash[:css_class] = i.to_s.dup
801
+ end; alias class= set_css_class # === class=
802
+ alias css_class= set_css_class # === css_class=
803
+ alias css_class set_css_class # === css_class
804
+ alias set_CSS_class set_css_class # === set_CSS_class
805
+
806
+ # ========================================================================= #
807
+ # === css_manager
808
+ #
809
+ # Invocation example:
810
+ #
811
+ # _.css_manager.css_rule_for_hover_pulse_grow(5)
812
+ # _.css_manager('css_rule_for_hover_pulse_grow(8)')
813
+ #
814
+ # ========================================================================= #
815
+ def css_manager(
816
+ i = '',
817
+ optional_argument1 = nil
818
+ )
819
+ css_manager = Cyberweb::CssManager.new
820
+ arguments = nil
821
+ if i.include?('(')
822
+ splitted = i.delete(')').
823
+ split('(')
824
+ i = splitted.first
825
+ arguments = splitted[1 .. -1]
826
+ end
827
+ if optional_argument1
828
+ arguments << optional_argument1
829
+ end
830
+ css_manager.send(i, *arguments)
831
+ return css_manager
832
+ end
833
+
834
+ # ========================================================================= #
835
+ # === append_css_manager
836
+ #
837
+ # This is a bit of a misnomer, as it will not be "append" - instead
838
+ # we will simply add onto the pre-content.
839
+ # ========================================================================= #
840
+ def append_css_manager(
841
+ i, use_this_name = nil
842
+ )
843
+ add_to_the_pre_content(
844
+ css_manager(i, use_this_name).result_as_CSS_style?
845
+ )
846
+ end
847
+
848
+ # ========================================================================= #
849
+ # === on_hover_pulse_increase
850
+ # ========================================================================= #
851
+ def on_hover_pulse_increase(
852
+ n_times = 8
853
+ )
854
+ append_css_manager(
855
+ 'css_rule_for_hover_pulse_grow('+n_times.to_s+')'
856
+ )
857
+ end
858
+
859
+ # ========================================================================= #
860
+ # === report (report tag)
861
+ # ========================================================================= #
862
+ def report(&block)
863
+ _ = to_str
864
+ if _.is_a? Array
865
+ _ = _.join(' ').strip
866
+ end
867
+ print _
868
+ end; alias display report # === display
869
+ alias ee report # === ee
870
+ alias report? report # === report?
871
+
872
+ # ========================================================================= #
873
+ # === append_this_to_the_css_style
874
+ # ========================================================================= #
875
+ def append_this_to_the_css_style(i)
876
+ i = " #{i.strip}"
877
+ @internal_hash[:css_style] << i
878
+ @internal_hash[:css_style].rstrip!
879
+ end; alias add_to_CSS_style append_this_to_the_css_style # === add_to_CSS_style
880
+
881
+ # ========================================================================= #
882
+ # === add_this_CSS_class
883
+ # ========================================================================= #
884
+ def center
885
+ add_this_CSS_class 'TAC'
886
+ end
887
+
888
+ # ========================================================================= #
889
+ # === modify_the_css_style_based_on_the_alignment
890
+ # ========================================================================= #
891
+ def modify_the_css_style_based_on_the_alignment(i = @options[:alignment])
892
+ case i
893
+ # ======================================================================= #
894
+ # === :center
895
+ # ======================================================================= #
896
+ when :center
897
+ append_this_to_the_css_style(' text-align: center;')
898
+ # ======================================================================= #
899
+ # === :right
900
+ # ======================================================================= #
901
+ when :right
902
+ append_this_to_the_css_style(' text-align: right;')
903
+ # ======================================================================= #
904
+ # === :left
905
+ # ======================================================================= #
906
+ when :left
907
+ append_this_to_the_css_style(' text-align: left;')
908
+ end
909
+ end
910
+
911
+ # ========================================================================= #
912
+ # === yellow_background
913
+ # ========================================================================= #
914
+ def yellow_background
915
+ add_to_CSS_classes('BG_Yellow')
916
+ end
917
+
918
+ # ========================================================================= #
919
+ # === width=
920
+ # ========================================================================= #
921
+ def width=(i = '500px')
922
+ add_to_CSS_style('width: '+i.to_s)
923
+ end
924
+
925
+ # ========================================================================= #
926
+ # === do_markify
927
+ #
928
+ # This currently isn't doing anything - perhaps at a later time it may
929
+ # become more relevant.
930
+ # ========================================================================= #
931
+ def do_markify
932
+ end
933
+
934
+ # ========================================================================= #
935
+ # === font=
936
+ # ========================================================================= #
937
+ def font=(i)
938
+ if i.is_a? Symbol
939
+ # ===================================================================== #
940
+ # For instance, :dejavu_condensed_22
941
+ # ===================================================================== #
942
+ i = i.to_s
943
+ if i.include? '_'
944
+ i = i.tr('_',' ') # dejavu condensed 22
945
+ if i =~ / \d{1,2}$/ # Ends with one or two numbers
946
+ font_size_to_use = i.scan(/ \d{1,2}$/).flatten.last.strip
947
+ if i.include? ' '
948
+ i = i.split(' ')[0 .. -2].join(' ').strip
949
+ i = i.dup if i.frozen?
950
+ i << '; font-size: '+font_size_to_use.to_s+' px;'
951
+ end
952
+ end
953
+ end
954
+ end
955
+ i = i.dup if i.frozen?
956
+ i << ';' unless i.end_with?(';')
957
+ @internal_hash[:css_style] << " font-family: #{i}"
958
+ end
959
+
960
+ end; end; end; end