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
@@ -8,105 +8,131 @@ require 'cyberweb/base/base.rb'
8
8
 
9
9
  module Cyberweb
10
10
 
11
- class WebObject < Base # === Cyberweb::WebObject
11
+ class WebObject < ::Cyberweb::Base # === Cyberweb::WebObject
12
12
 
13
- require 'cyberweb/requires/require_web_images.rb'
13
+ # ========================================================================= #
14
+ # === return_path_to_the_images_directory
15
+ # ========================================================================= #
16
+ def return_path_to_the_images_directory(
17
+ path_to_use = relative_path?
18
+ )
19
+ return "#{path_to_use}data/"\
20
+ "#{return_name_of_the_images_directory}/"
21
+ end
14
22
 
15
23
  # ========================================================================= #
16
- # === drag_local_image_or_remote_image
24
+ # === images_css
17
25
  #
18
- # As local_image_or_remote_image(), but with the default id argument to
19
- # refer to :drag.
26
+ # This method allows the user to set the same CSS rules for all
27
+ # images used on a given WebObject.
20
28
  # ========================================================================= #
21
- def drag_local_image_or_remote_image(
22
- local_image = '',
23
- remote_image_substitute = '', # This one should be the remote URL.
24
- optional_css_class = '',
25
- optional_the_id = :drag,
26
- optional_css_style = '',
27
- alt_text = '',
28
- &block
29
- )
30
- local_image_or_remote_image(
31
- local_image,
32
- remote_image_substitute,
33
- optional_css_class,
34
- optional_the_id,
35
- optional_css_style
36
- ) { :drag }
37
- end; alias dlocal_image_or_remote_image drag_local_image_or_remote_image # === dlocal_image_or_remote_image
38
- alias dimg2 drag_local_image_or_remote_image # === dimg2
29
+ def images_css(i)
30
+ @internal_hash[:global_CSS_rules_for_all_images] = i
31
+ end
39
32
 
40
33
  # ========================================================================= #
41
- # === local_image_or_remote_image
34
+ # === draggable_image
35
+ #
36
+ # Example code how to tap into this method:
37
+ #
38
+ # draggable_image 'STD/USB_CONNECTION_DEVICE.png',
39
+ # 'mar1em bblack1 mars3em'
42
40
  #
43
- # This method can be used to add a substitute image in the event that
44
- # a local image could not be found. Otherwise it behaves exactly like
45
- # image() does.
41
+ # It may be more convenient to use the alias name dimg().
46
42
  # ========================================================================= #
47
- def local_image_or_remote_image(
48
- local_image = '',
49
- remote_image_substitute = '', # This one should be the remote URL.
50
- optional_css_class = '',
51
- optional_the_id = '',
52
- optional_css_style = '',
53
- alt_text = '',
43
+ def draggable_image(
44
+ url = '',
45
+ css_class = :empty_string_or_global_css_rules_for_images,
46
+ the_id = '',
47
+ css_style = '',
48
+ alt_text = '',
54
49
  &block
55
50
  )
56
- # ======================================================================= #
57
- # We first have to decide whether the image exists or whether it does
58
- # not exist, at the specified location. If it exists then we can use
59
- # the regular img() call; otherwise we have to use the second argument
60
- # to this method.
61
- # ======================================================================= #
62
- assumed_path = rds(
63
- path_to_the_image_directory?+
64
- local_image
65
- )
66
- if File.exist? assumed_path
67
- img(
68
- local_image,
69
- optional_css_class,
70
- optional_the_id,
71
- optional_css_style,
72
- alt_text,
73
- &block
74
- )
51
+ if the_id and the_id.empty?
52
+ the_id = (
53
+ 'drag_'+
54
+ File.basename(url.to_s).
55
+ downcase.
56
+ delete_suffix(
57
+ File.extname(url.to_s)
58
+ )
59
+ ).tr('.','_')
60
+ end
61
+ if the_id and !the_id.empty? and !the_id.start_with?('drag_')
62
+ the_id = the_id.dup
63
+ the_id.prepend('drag_')
64
+ end
65
+ if uses_sinatra? # Handle sinatra first.
66
+ draggable_img_base64(url, css_class, css_style)
75
67
  else
76
- # ===================================================================== #
77
- # else we use a remote URL or a rescue URL anyway.
78
- # ===================================================================== #
79
- remote_img(
80
- remote_image_substitute,
81
- {
82
- css_class: optional_css_class,
83
- id: optional_the_id,
84
- css_style: optional_css_style
85
- },
86
- &block
87
- # alt_text is currently not handled here.
88
- )
68
+ img(url, css_class, the_id, css_style, alt_text) { :draggable_attribute }
89
69
  end
90
- end
70
+ end; alias draggable_img draggable_image # === draggable_img
71
+ alias dimg draggable_image # === dimg
72
+ alias dimage draggable_image # === dimage
91
73
 
92
74
  # ========================================================================= #
93
- # === remote_img
75
+ # === img_nbr
94
76
  #
95
- # This method can be used to "embed" a remote image in a given
96
- # web-application.
77
+ # The fourth argument, called css_style, used to default to
78
+ # "border-width:1px", but in May 2021 it was realized that this
79
+ # will conflict with e. g. a css class such as "bblack3". In
80
+ # this case we would want to use a border width of 3px, but
81
+ # this would be ignored due to the default. Thus, the default
82
+ # was removed.
97
83
  #
98
- # Usage example:
84
+ # In October 2022 the second argument to this method was changed to
85
+ # a Symbol.
86
+ # ========================================================================= #
87
+ def img_nbr(
88
+ url = 'RPG/YINYANG.png',
89
+ css_class = :empty_string_or_global_css_rules_for_images,
90
+ the_id = '',
91
+ css_style = '' # Empty default since May 2021 - see above for an explanation.
92
+ )
93
+ img(
94
+ url,
95
+ css_class,
96
+ the_id,
97
+ css_style
98
+ )
99
+ br
100
+ end; alias img_br img_nbr # === img_br
101
+ alias imgbr img_nbr # === imgbr
102
+
103
+ # ========================================================================= #
104
+ # === img (img tag, image tag)
99
105
  #
100
- # embed_remote_image('https://i.imgur.com/jYBEnjr.png', css_class: 'bblack2 mar4px', id: 'drag_ferkellampe')
106
+ # Keep in mind that this method has to remain quite flexible. It has
107
+ # to be able to work with input such as this:
108
+ #
109
+ # img(
110
+ # this_image.sub(Regexp.quote('/home/x/data/images/'),''),
111
+ # css_class: 'bblack3',
112
+ # width: '528',
113
+ # height: '340',
114
+ # alt: File.basename(this_image.delete_suffix(File.extname(this_image)))
115
+ # )
101
116
  #
102
117
  # ========================================================================= #
103
- def remote_img(
104
- i = 'http://mikesrpgcenter.com/krondor/maps/timirianya.html',
105
- optional_hash = {},
118
+ def img(
119
+ url = 'RPG/YINYANG.png',
120
+ css_class = :empty_string_or_global_css_rules_for_images,
121
+ the_id = '',
122
+ css_style = '',
123
+ alt_text = '',
106
124
  &block
107
125
  )
108
126
  # ======================================================================= #
109
- # === Handle blocks first
127
+ # First we should obtain the corresponding <img> tag. This will be
128
+ # delegated towards sg() which is an abbreviated name for
129
+ # string_image():
130
+ # ======================================================================= #
131
+ content = sg(
132
+ url, css_class, the_id, css_style, alt_text
133
+ )
134
+ # ======================================================================= #
135
+ # === Handle blocks given to this method next
110
136
  # ======================================================================= #
111
137
  if block_given?
112
138
  yielded = yield
@@ -114,33 +140,45 @@ class WebObject < Base # === Cyberweb::WebObject
114
140
  # === Handle Hashes next
115
141
  # ===================================================================== #
116
142
  if yielded.is_a? Hash
117
- optional_hash.merge!(yielded) # And push them onto the main Hash here.
143
+ # =================================================================== #
144
+ # === :draggable_attribute
145
+ # =================================================================== #
146
+ if yielded.has_key? :draggable_attribute
147
+ content = content.dup
148
+ content[-1,0] = ' draggable="true"'
149
+ end
150
+ # =================================================================== #
151
+ # === :usemap
152
+ # =================================================================== #
153
+ if yielded.has_key? :usemap
154
+ content = content.dup
155
+ content[-1,0] = ' usemap="'+yielded[:usemap].to_s+'"'
156
+ end
157
+ # ===================================================================== #
158
+ # === Handle Symbols next
159
+ # ===================================================================== #
160
+ elsif yielded.is_a? Symbol
161
+ case yielded # case tag
162
+ # =================================================================== #
163
+ # === :draggable_attribute
164
+ # =================================================================== #
165
+ when :draggable_attribute,
166
+ :drag
167
+ content = content.dup
168
+ content[-1,0] = ' draggable="true"'
169
+ end
118
170
  end
119
171
  end
120
172
  addnl(
121
- HtmlTags.img(i) { optional_hash }
173
+ content
122
174
  )
123
- end; alias embed_remote_image remote_img # === embed_remote_image
124
- alias remote_image remote_img # === remote_image
175
+ end; alias ig img # === ig
125
176
 
126
177
  # ========================================================================= #
127
- # === raw_image
128
- #
129
- # The first argument to this method should be the path to the file at
130
- # hand.
178
+ # === images_css_rules?
131
179
  # ========================================================================= #
132
- def raw_image(
133
- i = '',
134
- optional_css_class = '',
135
- optional_the_id = '',
136
- optional_css_style = '',
137
- alt_text = ''
138
- )
139
- return '<img src="'+i+'"'+
140
- css_class_or_no_class(optional_css_class)+
141
- id_or_no_id(optional_the_id, i)+
142
- css_style_or_no_style(optional_css_style)+
143
- alt_text_or_no_alt_text(alt_text)+'>'
180
+ def images_css_rules?
181
+ @internal_hash[:global_CSS_rules_for_all_images]
144
182
  end
145
183
 
146
184
  # ========================================================================= #
@@ -155,7 +193,7 @@ class WebObject < Base # === Cyberweb::WebObject
155
193
  # ========================================================================= #
156
194
  def simpler_string_image(
157
195
  i = :random, # This is the path - or a Symbol denoting that a path should be used.
158
- optional_css_class = '',
196
+ optional_css_class = :empty_string_or_global_css_rules_for_images,
159
197
  optional_the_id = '',
160
198
  optional_css_style = '',
161
199
  alt_text = '',
@@ -166,9 +204,28 @@ class WebObject < Base # === Cyberweb::WebObject
166
204
  javascript = '',
167
205
  &block
168
206
  )
207
+ case optional_css_class
208
+ # ======================================================================= #
209
+ # === :empty_string_or_global_css_rules_for_images
210
+ # ======================================================================= #
211
+ when :empty_string_or_global_css_rules_for_images
212
+ if @internal_hash[:global_CSS_rules_for_all_images].nil?
213
+ optional_css_class = ''
214
+ else
215
+ optional_css_class = @internal_hash[:global_CSS_rules_for_all_images]
216
+ end
217
+ end
218
+ yielded = nil # Dummy variable for later re-use.
219
+ # ======================================================================= #
220
+ # === Handle Symbols as primary input next; it will be assumed it is
221
+ # an image_url, such as :cheering_person becoming
222
+ # "#{IMG_DIR}CHEERING_PERSON.png"
223
+ # ======================================================================= #
169
224
  if i.is_a? Symbol
170
225
  i = ::Cyberweb.image_url(i) # This has the path.
171
226
  end
227
+ optional_width = nil
228
+ optional_height = nil
172
229
  # ======================================================================= #
173
230
  # === Handle Hashes next
174
231
  #
@@ -188,27 +245,53 @@ class WebObject < Base # === Cyberweb::WebObject
188
245
  optional_the_id = optional_css_class.delete(:the_id)
189
246
  end
190
247
  # ===================================================================== #
248
+ # === :loading
249
+ # ===================================================================== #
250
+ if optional_css_class.has_key? :loading
251
+ yielded = :lazy_loading if (optional_css_class[:loading] == true)
252
+ end
253
+ # ===================================================================== #
254
+ # === :alt
255
+ # ===================================================================== #
256
+ if optional_css_class.has_key? :alt
257
+ alt_text = optional_css_class.delete(:alt)
258
+ end
259
+ # ===================================================================== #
191
260
  # === :css_style
192
261
  # ===================================================================== #
193
262
  if optional_css_class.has_key? :css_style
194
263
  optional_css_style = optional_css_class.delete(:css_style)
195
264
  end
196
265
  # ===================================================================== #
266
+ # === :width
267
+ # ===================================================================== #
268
+ if optional_css_class.has_key? :width
269
+ optional_width = optional_css_class.delete(:width).to_s
270
+ end
271
+ # ===================================================================== #
272
+ # === :height
273
+ # ===================================================================== #
274
+ if optional_css_class.has_key? :height
275
+ optional_height = optional_css_class.delete(:height).to_s
276
+ end
277
+ # ===================================================================== #
197
278
  # === :content
198
279
  # ===================================================================== #
199
280
  if optional_css_class.has_key? :content
200
281
  i = optional_css_class.delete(:content)
201
282
  end
202
283
  # ===================================================================== #
203
- # === :css
204
- # ===================================================================== #
205
- if optional_css_class.has_key? :css
206
- optional_css_class = optional_css_class.delete(:css)
207
- # ===================================================================== #
208
284
  # === :css_class
285
+ #
286
+ # This should come last.
209
287
  # ===================================================================== #
210
- elsif optional_css_class.has_key? :css_class
288
+ if optional_css_class.has_key? :css_class
211
289
  optional_css_class = optional_css_class.delete(:css_class)
290
+ # ===================================================================== #
291
+ # === :css
292
+ # ===================================================================== #
293
+ elsif optional_css_class.has_key? :css
294
+ optional_css_class = optional_css_class.delete(:css)
212
295
  end
213
296
  end
214
297
  i = i.to_s
@@ -227,8 +310,31 @@ class WebObject < Base # === Cyberweb::WebObject
227
310
  # ======================================================================= #
228
311
  if block_given?
229
312
  yielded = yield
313
+ # ===================================================================== #
314
+ # First, handle Symbols given via a block here:
315
+ # ===================================================================== #
230
316
  case yielded
231
317
  # ===================================================================== #
318
+ # === :lazy_loading
319
+ #
320
+ # This will allow for lazy loading of an image.
321
+ #
322
+ # The use case for this may look like so:
323
+ #
324
+ # img 'foobar.jpg', loading: lazy
325
+ # img('foobar.jpg') { :lazy }
326
+ #
327
+ # ===================================================================== #
328
+ when :lazy_loading
329
+ i = i.dup
330
+ i[-1,0] = ' loading="lazy"'
331
+ # ===================================================================== #
332
+ # === :prepend_only_to_the_images_real_directory
333
+ # ===================================================================== #
334
+ when :prepend_only_to_the_images_real_directory
335
+ i.prepend(relative_path?.dup)
336
+ may_we_prepend_the_path = false
337
+ # ===================================================================== #
232
338
  # === :draggable
233
339
  # ===================================================================== #
234
340
  when :drag
@@ -242,12 +348,6 @@ class WebObject < Base # === Cyberweb::WebObject
242
348
  i = i.dup
243
349
  i[-1,0] = ' draggable="true"'
244
350
  # ===================================================================== #
245
- # === :prepend_only_to_the_images_real_directory
246
- # ===================================================================== #
247
- when :prepend_only_to_the_images_real_directory
248
- i.prepend(relative_path?.dup)
249
- may_we_prepend_the_path = false
250
- # ===================================================================== #
251
351
  # === :do_not_prepend_anything
252
352
  # ===================================================================== #
253
353
  when :do_not_prepend_anything
@@ -259,33 +359,49 @@ class WebObject < Base # === Cyberweb::WebObject
259
359
  i
260
360
  end
261
361
  return raw_image(
262
- i, optional_css_class, optional_the_id, optional_css_style, alt_text
362
+ i,
363
+ optional_css_class,
364
+ optional_the_id,
365
+ optional_css_style,
366
+ alt_text,
367
+ optional_width,
368
+ optional_height
263
369
  )
264
- end; alias sg simpler_string_image # === sg
370
+ end; alias string_img simpler_string_image # === string_img
265
371
  alias simg simpler_string_image # === simg
266
- alias string_img simpler_string_image # === string_img
372
+ alias sg simpler_string_image # === sg
267
373
 
268
374
  # ========================================================================= #
269
- # === img (img tag, image tag)
375
+ # === remote_img
376
+ #
377
+ # This method can be used to "embed" a remote image in a given
378
+ # web-application.
379
+ #
380
+ # Usage example:
381
+ #
382
+ # embed_remote_image('https://i.imgur.com/jYBEnjr.png', css_class: 'bblack2 mar4px', id: 'drag_ferkellampe')
383
+ # remote_img 'https://i.imgur.com/caKh9FI.png', 'mars2em bblack1', 'drag_grunge_text'
384
+ #
270
385
  # ========================================================================= #
271
- def img(
272
- url = 'RPG/YINYANG.png',
273
- css_class = '',
274
- the_id = '',
275
- css_style = '',
276
- alt_text = '',
386
+ def remote_img(
387
+ i = 'https://mikesrpgcenter.com/krondor/maps/timirianya.html',
388
+ optional_hash = {},
389
+ optional_id = nil,
277
390
  &block
278
391
  )
279
392
  # ======================================================================= #
280
- # First we should obtain the corresponding <img> tag. This will be
281
- # delegated towards sg() which is an abbreviated name for
282
- # string_image():
393
+ # === Handle Strings rather than Hashes next:
283
394
  # ======================================================================= #
284
- content = sg(
285
- url, css_class, the_id, css_style, alt_text
286
- )
395
+ if optional_hash.is_a? String
396
+ # ===================================================================== #
397
+ # In this case we assume the user tries to pass a CSS class into it.
398
+ # ===================================================================== #
399
+ optional_hash = {
400
+ css_class: optional_hash
401
+ }
402
+ end
287
403
  # ======================================================================= #
288
- # === Handle blocks given to this method next
404
+ # === Handle blocks first
289
405
  # ======================================================================= #
290
406
  if block_given?
291
407
  yielded = yield
@@ -293,181 +409,101 @@ class WebObject < Base # === Cyberweb::WebObject
293
409
  # === Handle Hashes next
294
410
  # ===================================================================== #
295
411
  if yielded.is_a? Hash
296
- # =================================================================== #
297
- # === :draggable_attribute
298
- # =================================================================== #
299
- if yielded.has_key? :draggable_attribute
300
- content = content.dup
301
- content[-1,0] = ' draggable="true"'
302
- end
303
- # =================================================================== #
304
- # === :usemap
305
- # =================================================================== #
306
- if yielded.has_key? :usemap
307
- content = content.dup
308
- content[-1,0] = ' usemap="'+yielded[:usemap].to_s+'"'
309
- end
310
- # ===================================================================== #
311
- # === Handle Symbols next
312
- # ===================================================================== #
313
- elsif yielded.is_a? Symbol
314
- case yielded # case tag
315
- # =================================================================== #
316
- # === :draggable_attribute
317
- # =================================================================== #
318
- when :draggable_attribute,
319
- :drag
320
- content = content.dup
321
- content[-1,0] = ' draggable="true"'
322
- end
412
+ optional_hash.merge!(yielded) # And push them onto the main Hash here.
323
413
  end
324
414
  end
415
+ if optional_id
416
+ optional_hash[:the_id] = optional_id
417
+ end
325
418
  addnl(
326
- content
419
+ HtmlTags.img(i) { optional_hash }
327
420
  )
328
- end
421
+ if optional_id and optional_id.to_s.start_with?('drag_') and drag_all_images?
422
+ enable_drag_for(optional_id)
423
+ end
424
+ end; alias embed_remote_image remote_img # === embed_remote_image
425
+ alias embed_remote_img remote_img # === embed_remote_img
426
+ alias remote_image remote_img # === remote_image
329
427
 
330
428
  # ========================================================================= #
331
- # === draggable_image
332
- #
333
- # Example code how to tap into this method:
334
- #
335
- # draggable_image 'STD/USB_CONNECTION_DEVICE.png',
336
- # 'mar1em bblack1 mars3em'
429
+ # === raw_image
337
430
  #
338
- # It may be more convenient to use the alias name dimg().
431
+ # The first argument to this method should be the path to the file at
432
+ # hand.
339
433
  # ========================================================================= #
340
- def draggable_image(
341
- url = '',
342
- css_class = '',
343
- the_id = '',
344
- css_style = '',
345
- alt_text = '',
346
- &block
434
+ def raw_image(
435
+ i = '',
436
+ optional_css_class = '',
437
+ optional_the_id = '',
438
+ optional_css_style = '',
439
+ alt_text = '',
440
+ optional_width = nil,
441
+ optional_height = nil
347
442
  )
348
- if the_id and the_id.empty?
349
- the_id = (
350
- 'drag_'+
351
- File.basename(url.to_s).
352
- downcase.
353
- delete_suffix(
354
- File.extname(url.to_s)
355
- )
356
- ).tr('.','_')
443
+ result = '<img src="'+i+'"'+
444
+ css_class_or_no_class(optional_css_class)+
445
+ id_or_no_id(optional_the_id, i)+
446
+ css_style_or_no_style(optional_css_style)+
447
+ alt_text_or_no_alt_text(alt_text).dup
448
+ if optional_width
449
+ result << ' width="'+optional_width.to_s+'"'
357
450
  end
358
- if the_id and !the_id.empty? and !the_id.start_with?('drag_')
359
- the_id = the_id.dup
360
- the_id.prepend('drag_')
451
+ if optional_height
452
+ result << ' height="'+optional_height.to_s+'"'
361
453
  end
362
- if uses_sinatra? # Handle sinatra first.
363
- draggable_img_base64(url, css_class, css_style)
364
- else
365
- img(url, css_class, the_id, css_style, alt_text) { :draggable_attribute }
366
- end
367
- end; alias draggable_img draggable_image # === draggable_img
368
- alias dimg draggable_image # === dimg
369
- alias dimage draggable_image # === dimage
370
-
371
- # ========================================================================= #
372
- # === return_this_base64_image
373
- # ========================================================================= #
374
- def return_this_base64_image(
375
- i,
376
- optional_css_class = '',
377
- optional_css_id = ''
378
- )
379
- return ::Cyberweb.return_this_base64_image(
380
- i,
381
- optional_css_class,
382
- optional_css_id
383
- )
454
+ result << '>'
455
+ return result
384
456
  end
385
457
 
386
458
  # ========================================================================= #
387
- # === add_this_base64_image
459
+ # === img_base64
388
460
  # ========================================================================= #
389
- def add_this_base64_image(
461
+ def img_base64(
390
462
  i,
391
463
  optional_css_class = '',
392
464
  optional_css_id = ''
393
465
  )
466
+ dataset = Cyberweb.convert_image_to_base64(i)
394
467
  addnl(
395
- return_this_base64_image(
396
- i,
397
- optional_css_class,
398
- optional_css_id
399
- )
400
- )
401
- end
402
-
403
- # ========================================================================= #
404
- # === display_the_registered_base64_images
405
- # ========================================================================= #
406
- def display_the_registered_base64_images
407
- return_the_registered_base64_images.each {|this_base64_image|
408
- add_this_base64_image(this_base64_image)
409
- }
410
- end
411
-
412
- # ========================================================================= #
413
- # === draggable_image_nbr
414
- # ========================================================================= #
415
- def draggable_image_nbr(
416
- url = '',
417
- css_class = '',
418
- the_id = '',
419
- css_style = '',
420
- alt_text = '',
421
- &block
422
- )
423
- draggable_image(
424
- url,
425
- css_class,
426
- the_id,
427
- css_style,
428
- alt_text,
429
- &block
468
+ '<img src="data:image/png;base64,'+dataset+'">'
430
469
  )
431
- br
432
470
  end
433
471
 
434
472
  # ========================================================================= #
435
- # === img_dir?
436
- # ========================================================================= #
437
- def img_dir?
438
- Cyberweb.server_base_directory?+
439
- 'data/'+
440
- return_name_of_the_images_directory+'/'
441
- end
442
-
443
- # ========================================================================= #
444
- # === return_path_to_the_images_directory
445
- # ========================================================================= #
446
- def return_path_to_the_images_directory(
447
- path_to_use = relative_path?
473
+ # === img_base64_absolute_path
474
+ #
475
+ # This is similar to img_base64(), but it will first obtain the image,
476
+ # then convert it into base64, then add it onto the webobject,
477
+ # making use of the absolute path.
478
+ # ========================================================================= #
479
+ def img_base64_absolute_path(i)
480
+ absolute_path_to_the_image = File.absolute_path(
481
+ path_to_the_main_image_directory?+
482
+ i
448
483
  )
449
- return "#{path_to_use}data/#{return_name_of_the_images_directory}/"
450
- end
484
+ # ======================================================================= #
485
+ # Note that the variable absolute_path_to_the_image will have an
486
+ # URL such as:
487
+ #
488
+ # "/home/x/data/images/STD/ZAUBERHUT.png"
489
+ #
490
+ # now.
491
+ # ======================================================================= #
492
+ if File.exist? absolute_path_to_the_image
493
+ decode_this_image_to_base64(absolute_path_to_the_image)
494
+ else
495
+ e 'No file exists at '+absolute_path_to_the_image
496
+ end
497
+ end; alias base64img img_base64 # === base64img
451
498
 
452
499
  # ========================================================================= #
453
- # === draggable_string_image
500
+ # === convert_image_to_base64
501
+ #
502
+ # This functionality depends on imagemagick, so make sure to install it
503
+ # if you wish to make use of this method.
454
504
  # ========================================================================= #
455
- def draggable_string_image(
456
- url = '',
457
- css_class = '',
458
- the_id = '',
459
- css_style = '',
460
- alt_text = '',
461
- &block
462
- )
463
- if the_id and the_id.empty?
464
- the_id = 'drag_'+File.basename(url).downcase.delete_suffix(File.extname(url))
465
- end
466
- if the_id and !the_id.empty? and !the_id.start_with?('drag_')
467
- the_id = the_id.dup
468
- the_id.prepend('drag_')
469
- end
470
- string_img(url, css_class, the_id, css_style, alt_text) { :draggable_attribute }
505
+ def convert_image_to_base64(this_image)
506
+ return Cyberweb.convert_image_to_base64(this_image)
471
507
  end
472
508
 
473
509
  # ========================================================================= #
@@ -501,6 +537,23 @@ class WebObject < Base # === Cyberweb::WebObject
501
537
  css_style = ''
502
538
  )
503
539
  register_this_id(the_id)
540
+ return string_absolute_img(
541
+ remote_url,
542
+ css_class,
543
+ the_id,
544
+ css_style
545
+ )
546
+ end
547
+
548
+ # ========================================================================= #
549
+ # === string_absolute_img
550
+ # ========================================================================= #
551
+ def string_absolute_img(
552
+ remote_url,
553
+ css_class = '',
554
+ the_id = '',
555
+ css_style = ''
556
+ )
504
557
  return ::Cyberweb.string_absolute_img(
505
558
  remote_url,
506
559
  css_class,
@@ -510,101 +563,75 @@ class WebObject < Base # === Cyberweb::WebObject
510
563
  end
511
564
 
512
565
  # ========================================================================= #
513
- # === enable_drag_all_images
514
- #
515
- # We enable a configuration option through this method call here.
516
- #
517
- # Note that we will also automatically enable jquery in this case,
518
- # as otherwise we could not drag the image in question around,
519
- # which would sort of defeat the points of having this method
520
- # in the first place - or it would require of you to manually
521
- # enable jquery, which seems superfluous.
522
- # ========================================================================= #
523
- def enable_drag_all_images
524
- do_use_jquery unless use_jquery?
525
- @config['drag_all_images'] = true
526
- end; alias drag_all_images enable_drag_all_images # === drag_all_images
527
- alias drag_everything enable_drag_all_images # === drag_everything
528
- alias do_drag_all_images enable_drag_all_images # === do_drag_all_image
529
- alias do_enable_drag_all_images enable_drag_all_images # === do_enable_drag_all_image
530
- alias drag_everything enable_drag_all_images # === drag_everything
531
- alias all_images_will_be_draggable enable_drag_all_images # === all_images_will_be_draggable
532
- alias enable_dragging enable_drag_all_images # === enable_dragging
533
- alias enable_drag_and_drop enable_drag_all_images # === enable_drag_and_drop
566
+ # === display_the_registered_base64_images
567
+ # ========================================================================= #
568
+ def display_the_registered_base64_images
569
+ return_the_registered_base64_images.each {|this_base64_image|
570
+ add_this_base64_image(this_base64_image)
571
+ }
572
+ end
534
573
 
535
574
  # ========================================================================= #
536
- # === relative_background_image
537
- #
538
- # We have to build the proper path, e. g.:
539
- #
540
- # url(data/images/WALLPAPERS/TheCalling_AnimeWallpaper.jpg);
541
- #
575
+ # === draggable_image_nbr
542
576
  # ========================================================================= #
543
- def relative_background_image(this_image)
544
- _ = ('../' * n_steps_to_the_base_directory?) +
545
- "#{name_of_img_dir?}".dup
546
- _ << this_image
547
- background_image = "background-image: url(#{_});" # The string to append.
548
- # ======================================================================= #
549
- # Next, add some default assumptions here. No repeat is ok to
550
- # use, centered background position - not sure.
551
- # background-position: center;
552
- # ======================================================================= #
553
- add_this_css_style(
554
- 'body {
555
- '+background_image+'
556
- background-repeat: no-repeat;
557
- }'
577
+ def draggable_image_nbr(
578
+ url = '',
579
+ css_class = '',
580
+ the_id = '',
581
+ css_style = '',
582
+ alt_text = '',
583
+ &block
558
584
  )
585
+ draggable_image(
586
+ url,
587
+ css_class,
588
+ the_id,
589
+ css_style,
590
+ alt_text,
591
+ &block
592
+ )
593
+ br
559
594
  end
560
595
 
561
596
  # ========================================================================= #
562
- # === background_image=
563
- #
564
- # Use this method to set the background image for a page.
565
- #
566
- # body {background-image: url("../IMG/");}'
567
- #
568
- # Since as of December 2011, if you pass an argument such as 'NJOY/#RAND'
569
- # then we use this as instruction to fetch a random entry from this
570
- # directory.
571
- #
572
- # Usage Example:
573
- #
574
- # w.background_image = 'NJOY/#RAND'
597
+ # === add_this_base64_image
598
+ # ========================================================================= #
599
+ def add_this_base64_image(
600
+ i,
601
+ optional_css_class = '',
602
+ optional_css_id = ''
603
+ )
604
+ addnl(
605
+ return_this_base64_image(
606
+ i,
607
+ optional_css_class,
608
+ optional_css_id
609
+ )
610
+ )
611
+ end
612
+
613
+ # ========================================================================= #
614
+ # === embed_and_drag_remote_image
575
615
  #
616
+ # This variant ensures that there is a leading 'drag_' for the id.
576
617
  # ========================================================================= #
577
- def background_image=(
578
- i = '/blaaa/foo.png'
618
+ def embed_and_drag_remote_image(
619
+ i = 'https://mikesrpgcenter.com/krondor/maps/timirianya.html',
620
+ optional_hash = {},
621
+ optional_id = nil,
622
+ &block
579
623
  )
580
- _ = "#{name_of_img_dir?}/".dup # Hardcoded for now. Yes, I am aware that this sucks.
581
- if i.to_s.downcase.include? '#rand' # Then get path given. Example: w.background_image = 'NJOY/#RAND'
582
- first_part = i.split('#').first
583
- _ << first_part
584
- _ << get_files_from(::Cyberweb.path_to_images?).sample.to_s
624
+ if optional_id.nil?
625
+ optional_id = 'drag_'+File.basename(i).to_s
585
626
  else
586
- case i
587
- when :random
588
- _ << Dir[::Cyberweb.path_to_images?+'NJOY/*'].sample.
589
- sub(/\/home\/x\/DATA\/IMG\//, '')
590
- else
591
- _ << i
627
+ unless optional_id.start_with? 'drag_'
628
+ optional_id = optional_id.dup
629
+ optional_id.prepend('drag_')
592
630
  end
593
631
  end
594
- background_img = "background-image: url(#{::Cyberweb.path_to_images?}#{_});" # The string to append.
595
- # ======================================================================= #
596
- # Next, add some default assumptions here. No repeat is ok to
597
- # use, centered background position - not sure.
598
- # background-position: center;
599
- # ======================================================================= #
600
- add_this_css_style(
601
- 'body {
602
- '+background_img+'
603
- background-repeat: no-repeat;
604
- }'
605
- )
606
- end; alias body_background_image background_image= # === body_background_image
607
- alias background_image background_image= # === background_image
632
+ embed_remote_image(i, optional_hash, optional_id, &block)
633
+ enable_drag_for(optional_id.to_sym)
634
+ end
608
635
 
609
636
  # ========================================================================= #
610
637
  # === absolute_image
@@ -624,28 +651,28 @@ class WebObject < Base # === Cyberweb::WebObject
624
651
  )
625
652
  addnl(result)
626
653
  return result
627
- end; alias absolute_img absolute_image # === absolute_img
654
+ end; alias absolute_img absolute_image # === absolute_img
655
+ alias display_this_remote_image absolute_image # === display_this_remote_image
628
656
 
629
657
  # ========================================================================= #
630
- # === return_the_registered_base64_images
658
+ # === drag_all_images?
631
659
  # ========================================================================= #
632
- def return_the_registered_base64_images
633
- ::Cyberweb.base64_images
660
+ def drag_all_images?
661
+ @config['drag_all_images']
634
662
  end
635
663
 
636
664
  # ========================================================================= #
637
- # === get_images
665
+ # === decode_this_image_to_base64
638
666
  #
639
- # This method will obtain all files from all subdirectories there as
640
- # well.
641
- # ========================================================================= #
642
- def get_images(
643
- from_this_dir = return_pwd
644
- )
645
- Dir["#{from_this_dir}/**/**"].select {|entry|
646
- ::Cyberweb.is_image?(entry)
647
- }
648
- end; alias get_images_from get_images # === get_images_from
667
+ # This method will first decode the image at hand into base64, and
668
+ # then embed it directly, by calling base64_image(). The latter will
669
+ # make use of addnl(), which will add the "converted" image to
670
+ # the WebObject instance.
671
+ # ========================================================================= #
672
+ def decode_this_image_to_base64(this_image)
673
+ dataset = convert_image_to_base64(this_image)
674
+ base64_image(dataset, :infer)
675
+ end
649
676
 
650
677
  # ========================================================================= #
651
678
  # === return_name_of_the_images_directory
@@ -654,40 +681,43 @@ class WebObject < Base # === Cyberweb::WebObject
654
681
  # without any trailing '/'.
655
682
  # ========================================================================= #
656
683
  def return_name_of_the_images_directory
657
- 'images'
684
+ @config['name_of_the_images_directory'].to_s
658
685
  end
659
686
 
660
687
  # ========================================================================= #
661
- # === display_all_images
688
+ # === drag_local_image_or_remote_image
662
689
  #
663
- # Use this when you just want to display all images.
690
+ # As local_image_or_remote_image(), but with the default id argument to
691
+ # refer to :drag.
692
+ # ========================================================================= #
693
+ def drag_local_image_or_remote_image(
694
+ local_image = '',
695
+ remote_image_substitute = '', # This one should be the remote URL.
696
+ optional_css_class = '',
697
+ optional_the_id = :drag,
698
+ optional_css_style = '',
699
+ alt_text = '',
700
+ &block
701
+ )
702
+ local_image_or_remote_image(
703
+ local_image,
704
+ remote_image_substitute,
705
+ optional_css_class,
706
+ optional_the_id,
707
+ optional_css_style
708
+ ) { :drag }
709
+ end; alias dlocal_image_or_remote_image drag_local_image_or_remote_image # === dlocal_image_or_remote_image
710
+ alias dimg2 drag_local_image_or_remote_image # === dimg2
711
+
712
+ # ========================================================================= #
713
+ # === default_image_directory?
664
714
  #
665
- # The first argument should be the location towards the
666
- # directory that holds all images.
715
+ # This method will always return a trailing '/'.
667
716
  # ========================================================================= #
668
- def display_all_images(
669
- dir = ::Cyberweb.return_pwd,
670
- optional_css = 'bblack1'
717
+ def default_image_directory?
718
+ rds(
719
+ @config['default_image_directory'].to_s+'/'
671
720
  )
672
- if dir.is_a? Hash
673
- dir = dir.delete(:from) if dir.has_key? :from
674
- end
675
- if dir.include? '$'
676
- dir = ConvertGlobalEnv[dir]
677
- end
678
- unless Dir.exist? dir
679
- e 'It seems as if the directory at `'+dir+'` does not exist.'
680
- end
681
- all_the_images = get_images_from(dir)
682
- all_the_images.each {|file|
683
- file = rds(file)
684
- h3 file, 'slateblue'
685
- imgbr(
686
- file,
687
- optional_css
688
- )
689
- }
690
- end; alias display_images_from display_all_images # === display_images_from
691
- alias display_images display_all_images # === display_images
721
+ end
692
722
 
693
723
  end; end