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,878 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === Cyberweb::ImagesToHtml
6
+ #
7
+ # This class can be used to generate a .html file containing all images
8
+ # of a given directory. In order for this to work you have to provide the
9
+ # directory that is to be scanned; if not provided then the current
10
+ # working directory is used. It allows us to quickly display an arbitrary
11
+ # collection of images.
12
+ #
13
+ # The overall design of this class has to remain quite flexible, as
14
+ # quite a few different classes make use of this class here with
15
+ # their own different use cases.
16
+ #
17
+ # The class must be able to:
18
+ #
19
+ # (1) allow the user to save into a file of his/her choosing
20
+ # (2) allow the user to designate a specific directory containing
21
+ # all the images
22
+ #
23
+ # Furthermore, since as of March 2022, the class can also gather
24
+ # video files and then generate a .html file based on this.
25
+ # =========================================================================== #
26
+ # === Cyberweb::ImagesToHtml
27
+ #
28
+ # Specific usage example for this class:
29
+ #
30
+ # webpage = Cyberweb::ImagesToHtml.new
31
+ # webpage.set_images(:return_pwd)
32
+ # webpage.run
33
+ #
34
+ # =========================================================================== #
35
+ # require 'cyberweb/utility_scripts/images_to_html/images_to_html.rb'
36
+ # webpage = Cyberweb::ImagesToHtml.new(ARGV)
37
+ # ============================================================================ #
38
+ require 'cyberweb/base/base.rb'
39
+
40
+ module Cyberweb
41
+
42
+ class ImagesToHtml < ::Cyberweb::Base # === Cyberweb::ImagesToHtml
43
+
44
+ alias e puts
45
+
46
+ require 'html_tags/requires/require_the_html_tags_project.rb'
47
+ include HtmlTags
48
+
49
+ require 'cyberweb/toplevel_methods/misc.rb'
50
+ require 'cyberweb/toplevel_methods/jquery.rb'
51
+ require 'cyberweb/html_template/html_template.rb'
52
+ require 'cyberweb/utility_scripts/images_to_html/misc.rb'
53
+
54
+ # ========================================================================= #
55
+ # === NAMESPACE
56
+ # ========================================================================= #
57
+ NAMESPACE = inspect
58
+
59
+ # ========================================================================= #
60
+ # === DEBUG
61
+ #
62
+ # Whether we debug this class or not.
63
+ # ========================================================================= #
64
+ DEBUG = false
65
+
66
+ # ========================================================================= #
67
+ # === ARRAY_IMAGES
68
+ # ========================================================================= #
69
+ ARRAY_IMAGES = %w( jpg png gif ) # All valid image-formats.
70
+
71
+ # ========================================================================= #
72
+ # === INFO_DIRECTORY
73
+ #
74
+ # This is the base directory where to store, unless we use Dir.pwd.
75
+ # ========================================================================= #
76
+ INFO_DIRECTORY = '/Depot/Information/'
77
+
78
+ # ========================================================================= #
79
+ # === BE_VERBOSE
80
+ # ========================================================================= #
81
+ BE_VERBOSE = true
82
+
83
+ # ========================================================================= #
84
+ # === HTML
85
+ # ========================================================================= #
86
+ HTML = '.html' # HTML File suffice comes here.
87
+
88
+ # ========================================================================= #
89
+ # === IMG_CSS_STYLE
90
+ #
91
+ # Determine the default css-rules for each <img> tag to be used.
92
+ # ========================================================================= #
93
+ IMG_CSS_STYLE =
94
+ 'border:1px solid black;
95
+ margin-left: 4.5em;
96
+ padding-left: 5px;'.
97
+ delete("\n").squeeze(' ')
98
+
99
+ # ========================================================================= #
100
+ # === initialize
101
+ #
102
+ # The first argument to this method should contain the commandline
103
+ # arguments, which is usually ARGV.
104
+ # ========================================================================= #
105
+ def initialize(
106
+ commandline_arguments = ARGV,
107
+ run_already = true
108
+ )
109
+ reset
110
+ # ======================================================================= #
111
+ # The next clause must come before set_commandline_arguments().
112
+ # ======================================================================= #
113
+ case commandline_arguments
114
+ # ======================================================================= #
115
+ # === :do_not_run_yet
116
+ # ======================================================================= #
117
+ when :do_not_run_yet
118
+ commandline_arguments = []
119
+ run_already = false
120
+ end
121
+ set_commandline_arguments(
122
+ commandline_arguments
123
+ )
124
+ # ======================================================================= #
125
+ # === Handle blocks next
126
+ # ======================================================================= #
127
+ if block_given?
128
+ case yield
129
+ # ===================================================================== #
130
+ # === :use_jquery
131
+ # ===================================================================== #
132
+ when :use_jquery,
133
+ :jquery
134
+ @internal_hash[:use_jquery] = true
135
+ # ===================================================================== #
136
+ # === :do_not_run_yet
137
+ # ===================================================================== #
138
+ when :do_not_run_yet
139
+ run_already = false
140
+ end
141
+ end
142
+ case run_already
143
+ # ======================================================================= #
144
+ # === :do_not_run_yet
145
+ # ======================================================================= #
146
+ when :do_not_run_yet,
147
+ :dont_run_yet
148
+ run_already = false
149
+ end
150
+ run if run_already
151
+ end
152
+
153
+ # ========================================================================= #
154
+ # === reset (reset tag)
155
+ # ========================================================================= #
156
+ def reset
157
+ # ======================================================================= #
158
+ # Set up sane defaults first.
159
+ # ======================================================================= #
160
+ super()
161
+ be_verbose
162
+ # ======================================================================= #
163
+ # === @namespace
164
+ # ======================================================================= #
165
+ @namespace = NAMESPACE
166
+ # ======================================================================= #
167
+ # === @this_directory_contains_all_images
168
+ # ======================================================================= #
169
+ @this_directory_contains_all_images = return_pwd
170
+ # ======================================================================= #
171
+ # === @save_into_this_local_file
172
+ # ======================================================================= #
173
+ set_save_into_this_local_file(
174
+ :infer_the_name_from_the_directory_containing_all_images
175
+ )
176
+ # ======================================================================= #
177
+ # === @content_of_the_html_page
178
+ # ======================================================================= #
179
+ @content_of_the_html_page = ''.dup
180
+ # ======================================================================= #
181
+ # === @show_the_name_of_the_image_file
182
+ # ======================================================================= #
183
+ @show_the_name_of_the_image_file = false
184
+ # ======================================================================= #
185
+ # === @body_css_style
186
+ # ======================================================================= #
187
+ @body_css_style = '
188
+ background-color: black; color: white; font-size: 1.2em;'
189
+ # ======================================================================= #
190
+ # === @debug
191
+ # ======================================================================= #
192
+ @debug = DEBUG
193
+ # ======================================================================= #
194
+ # === @array_work_on_these_files
195
+ #
196
+ # This Array will contain all the different images (or videos) that
197
+ # were found in the given directory at hand.
198
+ # ======================================================================= #
199
+ @array_work_on_these_files = []
200
+ # ======================================================================= #
201
+ # === @work_on_video_files_only
202
+ # ======================================================================= #
203
+ @work_on_video_files_only = false
204
+ # ======================================================================= #
205
+ # === @do_traverse_into_subdirectories
206
+ # ======================================================================= #
207
+ @do_traverse_into_subdirectories = true
208
+ # ======================================================================= #
209
+ # === @internal_hash
210
+ # ======================================================================= #
211
+ @internal_hash = {}
212
+ # ======================================================================= #
213
+ # === :use_HTML_table_layout
214
+ # ======================================================================= #
215
+ @internal_hash[:use_HTML_table_layout] = false
216
+ # ======================================================================= #
217
+ # === :use_n_rows_for_the_html_table
218
+ # ======================================================================= #
219
+ @internal_hash[:use_n_rows_for_the_html_table] = 3
220
+ # ======================================================================= #
221
+ # === :use_jquery
222
+ #
223
+ # Whether we will use jquery by default or whether we will not.
224
+ #
225
+ # I decided to set this to true during June 2021. While it creates
226
+ # an overhead and an increase in file size, I think jquery is
227
+ # very convenient. This may, however had, be subject to change in
228
+ # the future, hence why this comment has been added.
229
+ # ======================================================================= #
230
+ @internal_hash[:use_jquery] = true
231
+ # ======================================================================= #
232
+ # === :sort_how
233
+ #
234
+ # The next variable determines if, and how, we should sort on the
235
+ # Dir[] result. To disable sorting set this to nil or to
236
+ # :do_not_sort_at_all. The value :sort_by_date will sort by date,
237
+ # meaning older images are sorted before other images. This will be
238
+ # based on the filename, so if the filename includes "1982" then
239
+ # this means that it is the date 1982.
240
+ # ======================================================================= #
241
+ @internal_hash[:sort_how] = :sort_by_date # :do_not_sort_at_all
242
+ # ======================================================================= #
243
+ # === :registered_ids
244
+ #
245
+ # This array will keep track of each id assigned to the <img> tag.
246
+ # This is necessary for the jquery-drag operation.
247
+ # ======================================================================= #
248
+ @internal_hash[:registered_ids] = []
249
+ end
250
+
251
+ # ========================================================================= #
252
+ # === show_the_name_of_the_image_file?
253
+ # ========================================================================= #
254
+ def show_the_name_of_the_image_file?
255
+ @show_the_name_of_the_image_file
256
+ end
257
+
258
+ # ========================================================================= #
259
+ # === return_image
260
+ #
261
+ # Use this when you wish to append an image.
262
+ # ========================================================================= #
263
+ def return_image(i)
264
+ result = ''.dup
265
+ i = rds(i)
266
+ if show_the_name_of_the_image_file? and !use_html_table?
267
+ result <<
268
+ '<h2 style="color:orange; font-style: italic; padding: 5px">'+i+'</h2>'+NBR
269
+ end
270
+ new_filename = File.basename(i).gsub(/#{File.extname(i)}/, '')
271
+ id = 'drag_'+new_filename.downcase.tr(' ','').tr('.','_')
272
+ # ======================================================================= #
273
+ # Store these IDs in the global Array as well:
274
+ # ======================================================================= #
275
+ @internal_hash[:registered_ids] << id
276
+ result << '<img id="'+id+'" style="'+IMG_CSS_STYLE+'" src="'+i+'"'.dup
277
+ if use_HTML_table?
278
+ result << ' width="440"'
279
+ end
280
+ result << '>'+NBR
281
+ if use_jquery?
282
+ result << '<script>
283
+ $(function() {
284
+ $( "#'+id+'" ).draggable();
285
+ });
286
+ </script>'
287
+ end
288
+ return result
289
+ end
290
+
291
+ # ========================================================================= #
292
+ # === clear_images
293
+ # ========================================================================= #
294
+ def clear_images
295
+ @array_work_on_these_files.clear # Should always be an Array.
296
+ end; alias clear_array clear_images # === clear_array
297
+
298
+ # ========================================================================= #
299
+ # === apply_filter
300
+ #
301
+ # This method can be used to, for instance, selectively ignore .gif
302
+ # files.
303
+ # ========================================================================= #
304
+ def apply_filter(i) # Apply a filter here.
305
+ case i
306
+ # ======================================================================= #
307
+ # === only gif
308
+ # ======================================================================= #
309
+ when /^only gif/
310
+ @array_work_on_these_files.reject! {|img| !img.include? '.gif' }
311
+ end
312
+ end
313
+
314
+ # ========================================================================= #
315
+ # === scan_for_images_in_this_directory
316
+ # ========================================================================= #
317
+ def scan_for_images_in_this_directory(
318
+ i = return_pwd,
319
+ include_subdirectories = true
320
+ )
321
+ if i.is_a? Array
322
+ i = i.first # We only use the first argument of Arrays passed for now.
323
+ end
324
+ case i
325
+ # ======================================================================= #
326
+ # === :return_pwd
327
+ # ======================================================================= #
328
+ when :return_pwd
329
+ i = return_pwd
330
+ end
331
+ case i.to_s.downcase
332
+ # ======================================================================= #
333
+ # === njoy
334
+ # ======================================================================= #
335
+ when 'njoy'
336
+ i = ENV['MY_DATA'].to_s.dup+'/images/NJOY/'
337
+ end
338
+ i = ConvertGlobalEnv.convert(i) if i.include? '$'
339
+ set_work_on_this_directory(i)
340
+ look_for_the_images_here(i, :include_the_subdirectories_as_well) # This is ok because set_images will check on its own.
341
+ end; alias scan_here scan_for_images_in_this_directory # === scan_here
342
+ alias scan_there scan_for_images_in_this_directory # === scan_there
343
+ alias scan_from scan_for_images_in_this_directory # === scan_from
344
+ alias use_this_dir= scan_for_images_in_this_directory # === use_this_dir=
345
+
346
+ # ========================================================================= #
347
+ # === the_three_main_actions
348
+ # ========================================================================= #
349
+ def the_three_main_actions
350
+ look_for_the_images
351
+ build_up_the_HTML_string
352
+ do_create_the_html_page
353
+ end
354
+
355
+ # ========================================================================= #
356
+ # === use_HTML_table_layout?
357
+ # ========================================================================= #
358
+ def use_HTML_table_layout?
359
+ @internal_hash[:use_HTML_table_layout]
360
+ end; alias use_html_table_layout? use_HTML_table_layout? # === use_html_table_layout?
361
+ alias use_html_table? use_HTML_table_layout? # === use_html_table?
362
+ alias use_HTML_table? use_HTML_table_layout? # === use_HTML_table?
363
+
364
+ # ========================================================================= #
365
+ # === return_infer_the_name_from_the_directory_containing_all_images
366
+ # ========================================================================= #
367
+ def return_infer_the_name_from_the_directory_containing_all_images(i)
368
+ basename = File.basename(i.to_s)
369
+ basename.downcase!
370
+ basename << '.html' unless basename.end_with? '.html'
371
+ basename = File.absolute_path(basename)
372
+ return basename
373
+ end
374
+
375
+ # ========================================================================= #
376
+ # === add (add tag)
377
+ #
378
+ # This method can be used to add (append) onto the main String that stores
379
+ # the content of the webpage as such.
380
+ #
381
+ # Using the alias _ is also permissive, but I recommend using only
382
+ # add() - it makes the code more explicit without it becoming too long,
383
+ # in my opinion.
384
+ # ========================================================================= #
385
+ def add(i) # Use this (and only this) method to append onto the main string.
386
+ @content_of_the_html_page << i
387
+ end; alias _ add # === _
388
+
389
+ # ========================================================================= #
390
+ # === look_for_the_images
391
+ #
392
+ # Use this method to set the list of images. It will obtain all images
393
+ # from the given subdirectory.
394
+ #
395
+ # In order for this to work correctly the variable that keeps track of
396
+ # the main directory at hand has to be set.
397
+ # ========================================================================= #
398
+ def look_for_the_images(
399
+ i = work_on_which_directory?,
400
+ include_subdirectories = @do_traverse_into_subdirectories
401
+ )
402
+ case i
403
+ # ======================================================================= #
404
+ # === :return_pwd
405
+ # ======================================================================= #
406
+ when :return_pwd
407
+ i = return_pwd
408
+ end
409
+ case include_subdirectories
410
+ when true,
411
+ :include_the_subdirectories_as_well
412
+ i = "#{i}/**/**"
413
+ else
414
+ i = "#{i}/*"
415
+ end
416
+ _ = Dir[i.squeeze('/')]
417
+ if sort_how?
418
+ case sort_how?
419
+ # ===================================================================== #
420
+ # === :sort_by_date
421
+ # ===================================================================== #
422
+ when :sort_by_date,
423
+ :sort_by_time
424
+ require 'time'
425
+ _ = ::Cyberweb.sort_this_array_by_time(_)
426
+ end
427
+ end
428
+ if work_on_video_files_only?
429
+ @array_work_on_these_files = _.select {|entry|
430
+ is_a_video_file?(entry)
431
+ }
432
+ else
433
+ @array_work_on_these_files = _.select {|entry|
434
+ is_an_image?(entry)
435
+ }
436
+ end
437
+ end; alias store_images look_for_the_images # === store_images
438
+ alias append_images look_for_the_images # === append_images
439
+ alias set_images look_for_the_images # === set_images
440
+ alias obtain_all_images_from_the_designated_directory look_for_the_images # === obtain_all_images_from_the_designated_directory
441
+ alias look_for_the_images_here look_for_the_images # === look_for_the_images_here
442
+
443
+ # ========================================================================= #
444
+ # === work_on_video_files_only?
445
+ # ========================================================================= #
446
+ def work_on_video_files_only?
447
+ @work_on_video_files_only
448
+ end
449
+
450
+ # ========================================================================= #
451
+ # === report_scanning_directory
452
+ # ========================================================================= #
453
+ def report_scanning_directory
454
+ opnn; e "Scanning from the directory "\
455
+ "`#{sdir(work_on_which_directory?)}`."
456
+ end
457
+
458
+ # ========================================================================= #
459
+ # === n_rows?
460
+ # ========================================================================= #
461
+ def n_rows?
462
+ @internal_hash[:use_n_rows_for_the_html_table]
463
+ end
464
+
465
+ # ========================================================================= #
466
+ # === save_into_this_local_file?
467
+ # ========================================================================= #
468
+ def save_into_this_local_file?
469
+ @save_into_this_local_file
470
+ end; alias title? save_into_this_local_file? # === title?
471
+ alias store_where? save_into_this_local_file? # === store_where?
472
+ alias stored_where? save_into_this_local_file? # === stored_where?
473
+ alias output_file? save_into_this_local_file? # === output_file?
474
+ alias store_into? save_into_this_local_file? # === store_into?
475
+ alias save_into_which_file? save_into_this_local_file? # === save_into_which_file?
476
+ alias save? save_into_this_local_file? # === save?
477
+
478
+ # ========================================================================= #
479
+ # === do_create_the_html_page
480
+ # ========================================================================= #
481
+ def do_create_the_html_page(
482
+ into = save_into_which_file?
483
+ )
484
+ # ======================================================================= #
485
+ # Make the title a bit cleaner next:
486
+ # ======================================================================= #
487
+ use_this_title = File.basename(title?).delete_suffix('.html')
488
+ # ======================================================================= #
489
+ # Build the .html file via the HtmlTemplate class next:
490
+ # ======================================================================= #
491
+ what = Cyberweb::HtmlTemplate.new {{
492
+ title: use_this_title,
493
+ css_style: '
494
+ a:link { text-decoration: none; color: gold; }
495
+ a:hover { text-decoration: none; color: lightblue; }
496
+ ',
497
+ body_css_style: @body_css_style, # This will honour the CSS rules.
498
+ body: html_content?
499
+ }}.to_s
500
+ save_file(what, into)
501
+ end; alias append_everything do_create_the_html_page # === append_everything
502
+
503
+ # ========================================================================= #
504
+ # === set_save_into_this_local_file
505
+ # ========================================================================= #
506
+ def set_save_into_this_local_file(
507
+ i = INFO_DIRECTORY+
508
+ '/all_files_from_'+
509
+ input_directory?.to_s
510
+ ) # contains the full path where to store things.
511
+ case i
512
+ # ======================================================================= #
513
+ # === :use_the_current_working_directory_base_name
514
+ # ======================================================================= #
515
+ when :use_the_current_working_directory_base_name
516
+ i = File.basename(return_pwd).downcase
517
+ # ======================================================================= #
518
+ # === :infer_the_name_from_the_directory_containing_all_images
519
+ # ======================================================================= #
520
+ when :infer_the_name_from_the_directory_containing_all_images,
521
+ :infer,
522
+ :use_the_directory_containing_all_images_as_base
523
+ _ = directory_containing_all_images?
524
+ i = File.basename(_).downcase
525
+ end
526
+ if i
527
+ i = i.dup if i.frozen?
528
+ # ===================================================================== #
529
+ # i = File.basename(i) # File.basename() is not good, it removes '/'
530
+ # Append '.html' string, unless it already exists there.
531
+ # ===================================================================== #
532
+ i << HTML unless i.end_with? HTML
533
+ end
534
+ i = File.absolute_path(i)
535
+ @save_into_this_local_file = i
536
+ end; alias set_store_where set_save_into_this_local_file # === set_store_where
537
+ alias store_where set_save_into_this_local_file # === store_where
538
+ alias set_page_name set_save_into_this_local_file # === set_page_name
539
+ alias store_where= set_save_into_this_local_file # === store_where=
540
+ alias set_output_page_here set_save_into_this_local_file # === set_output_page_here
541
+
542
+ # ========================================================================= #
543
+ # === set_content_of_the_html_page
544
+ # ========================================================================= #
545
+ def set_content_of_the_html_page(i)
546
+ @content_of_the_html_page = i
547
+ end
548
+
549
+ # ========================================================================= #
550
+ # === return_jquery
551
+ #
552
+ # This method will add the jquery version.
553
+ #
554
+ # In order to do this, we have to tap into the Cyberweb project.
555
+ # ========================================================================= #
556
+ def return_jquery
557
+ return "\n#{::Cyberweb.return_jquery_string}"
558
+ end
559
+
560
+ # ========================================================================= #
561
+ # === content_of_the_html_page?
562
+ # ========================================================================= #
563
+ def content_of_the_html_page?
564
+ @content_of_the_html_page
565
+ end; alias html_content? content_of_the_html_page? # === html_content?
566
+ alias html_string? content_of_the_html_page? # === html_string?
567
+
568
+ # ========================================================================= #
569
+ # === show_names_of_image_files
570
+ # ========================================================================= #
571
+ def show_names_of_image_files
572
+ @show_the_name_of_the_image_file = true
573
+ end; alias show_names show_names_of_image_files # === show_names
574
+
575
+ # ========================================================================= #
576
+ # === set_background
577
+ #
578
+ # Pass the colour that you want to use for the background here, such
579
+ # as :orange or :tomato.
580
+ # ========================================================================= #
581
+ def set_background(i)
582
+ i = i.to_s
583
+ @body_css_style = "background-color:#{i};"
584
+ end; alias background set_background # === background
585
+
586
+ # ========================================================================= #
587
+ # === scan_for_images_in_current_directory
588
+ # ========================================================================= #
589
+ def scan_for_images_in_current_directory
590
+ scan_for_images_in_this_directory(return_pwd)
591
+ end
592
+
593
+ # ========================================================================= #
594
+ # === set_this_directory_contains_all_images
595
+ # ========================================================================= #
596
+ def set_this_directory_contains_all_images(
597
+ i = :pwd
598
+ )
599
+ i = i.first if i.is_a? Array
600
+ case i
601
+ # ======================================================================= #
602
+ # === :pwd
603
+ #
604
+ # This entry points defaults to the current working directory.
605
+ # ======================================================================= #
606
+ when :pwd,
607
+ :default,
608
+ :return_pwd,
609
+ nil
610
+ i = return_pwd
611
+ end
612
+ if i
613
+ i = i.dup if i.frozen? # Ensure that we do not have a frozen String.
614
+ i << '/' unless i.end_with? '/'
615
+ end
616
+ @this_directory_contains_all_images = i
617
+ end; alias set_this_dir set_this_directory_contains_all_images # === set_this_dir
618
+ alias set_work_on_this_directory set_this_directory_contains_all_images # === set_work_on_this_directory
619
+ alias set_main_directory set_this_directory_contains_all_images # === set_main_directory
620
+ alias set_this_directory_contains_the_images set_this_directory_contains_all_images # === set_this_directory_contains_the_images
621
+
622
+ # ========================================================================= #
623
+ # === save_file
624
+ # ========================================================================= #
625
+ def save_file(
626
+ what = content_of_the_html_page?,
627
+ into = save_into_this_local_file?
628
+ )
629
+ into = File.absolute_path(into)
630
+ if @be_verbose
631
+ opnn; e "Now saving into the file `#{sfile(into)}`."
632
+ end
633
+ if File.exist? into
634
+ opnn; puts ::Colours.tomato('Warning: ')+
635
+ sfile(into)+
636
+ ::Colours.tomato(' already exists.')
637
+ opnn; puts ::Colours.tomato('We will delete it first.')
638
+ File.delete(into)
639
+ end
640
+ write_what_into(what, into)
641
+ end; alias save_what_to save_file # === save_what
642
+
643
+ # ========================================================================= #
644
+ # === do_use_HTML_table_layout
645
+ # ========================================================================= #
646
+ def do_use_HTML_table_layout
647
+ @internal_hash[:use_HTML_table_layout] = true
648
+ end
649
+
650
+ # ========================================================================= #
651
+ # === menu (menu tag)
652
+ # ========================================================================= #
653
+ def menu(
654
+ i = commandline_arguments?
655
+ )
656
+ if i.is_a? Array
657
+ i.each {|entry| menu(entry) }
658
+ else
659
+ case i # case tag
660
+ # ===================================================================== #
661
+ # === cweb --tablelayout
662
+ # ===================================================================== #
663
+ when /^-?-?tablelayout$/i,
664
+ /^-?-?table$/i,
665
+ /^-?-?html(-|_)?tables?$/i,
666
+ /^-?-?use(-|_)?HTML(-|_)?tables?$/i
667
+ do_use_HTML_table_layout
668
+ # ===================================================================== #
669
+ # === cweb --table=4 # 4 rows
670
+ #
671
+ # This entry point allows the user to set another number of rows
672
+ # for the generated HTML table.
673
+ # ===================================================================== #
674
+ when /^-?-?table=(.+)$/i
675
+ n_rows = $1.to_s.to_i
676
+ @internal_hash[:use_n_rows_for_the_html_table] = n_rows
677
+ do_use_HTML_table_layout
678
+ # ===================================================================== #
679
+ # === --pwd
680
+ # ===================================================================== #
681
+ when /^-?-?pwd$/i, # This means we store in the current directory.
682
+ :return_pwd
683
+ set_this_directory_contains_the_images(:pwd)
684
+ set_store_where(:infer)
685
+ clear_images
686
+ scan_for_images_in_this_directory
687
+ the_three_main_actions
688
+ exit
689
+ # ===================================================================== #
690
+ # === cweb --videos
691
+ #
692
+ # This entry point allows us to work on video-files only. If that
693
+ # is the case then the sorting-mode will be changed - aka to not
694
+ # sort at all.
695
+ # ===================================================================== #
696
+ when /^-?-?videos$/i,
697
+ /^-?-?videos(-|_)?only$/i
698
+ @work_on_video_files_only = true
699
+ @internal_hash[:sort_how] = :do_not_sort_at_all
700
+ # ===================================================================== #
701
+ # === cweb --do-not-traverse
702
+ #
703
+ # This will NOT check for any images in a subdirectory.
704
+ # ===================================================================== #
705
+ when /^-?-?do(-|_)?not(-|_)?traverse$/i,
706
+ /^-?-?simple$/i # cweb --simple
707
+ @do_traverse_into_subdirectories = false
708
+ # ===================================================================== #
709
+ # === --help
710
+ # ===================================================================== #
711
+ when /^-?-?help$/i
712
+ show_help
713
+ exit
714
+ # ===================================================================== #
715
+ # === ?
716
+ # ===================================================================== #
717
+ when '?'
718
+ opnn; e 'The file in question will be:'
719
+ e
720
+ e " #{sfile(store_where?)}"
721
+ e
722
+ exit
723
+ # ===================================================================== #
724
+ # === --njoy
725
+ # ===================================================================== #
726
+ when /-?-?njoy$/i,
727
+ :njoy
728
+ e 'We will use the excellent images from a special directory.'
729
+ scan_there :njoy
730
+ else
731
+ if i.is_a?(String) and File.directory?(i)
732
+ # ================================================================= #
733
+ # (1) Assign a new main directory.
734
+ # ================================================================= #
735
+ set_this_directory_contains_all_images(i)
736
+ # ================================================================= #
737
+ # (2) Infer a new name for the locally saved file.
738
+ # ================================================================= #
739
+ set_save_into_this_local_file(
740
+ :use_the_directory_containing_all_images_as_base
741
+ )
742
+ end
743
+ end
744
+ end
745
+ end
746
+
747
+ # ========================================================================= #
748
+ # === run
749
+ # ========================================================================= #
750
+ def run
751
+ menu
752
+ debug if @debug
753
+ the_three_main_actions
754
+ end
755
+
756
+ # ========================================================================= #
757
+ # === show_help (help tag)
758
+ #
759
+ # This method will show usage-information, on the commandline, to the
760
+ # end user.
761
+ # ========================================================================= #
762
+ def show_help
763
+ e 'This class currently allows for these special arguments:'
764
+ e
765
+ e steelblue(' NJOY')
766
+ e steelblue(' PWD')
767
+ e steelblue(' ?')
768
+ e steelblue(' --videos-only ')+lightgreen('# to work on video-files only')
769
+ e steelblue(' --do-not-traverse ')+lightgreen('# do not obtain images from any subdirectory')
770
+ e steelblue(' --use-HTML-table ')+lightgreen('# display via a HTML table; currently hardcoded to 3 images per row')
771
+ e
772
+ end
773
+
774
+ # ========================================================================= #
775
+ # === build_up_the_HTML_string
776
+ #
777
+ # This is the method that will build up our resulting HTML string.
778
+ # ========================================================================= #
779
+ def build_up_the_HTML_string(
780
+ array = @array_work_on_these_files
781
+ )
782
+ _ = ''.dup # This will become the content for the HtmlTemplate.
783
+ # ======================================================================= #
784
+ # Next add jquery support, after the appropriate CSS was added.
785
+ # ======================================================================= #
786
+ if use_jquery?
787
+ _ << return_jquery
788
+ end
789
+ if use_HTML_table_layout?
790
+ _ << "<table style=\"table-layout: fixed\">\n" # This will force equally spaced cells.
791
+ end
792
+ # ======================================================================= #
793
+ # Next add the images. Note that return_image() will handle
794
+ # this situation for us.
795
+ # ======================================================================= #
796
+ unless array.empty?
797
+ array.each_with_index {|this_entry, index|
798
+ if work_on_video_files_only?
799
+ _ << '<div style="color: lightgreen">'
800
+ _ << HtmlTags.h2(this_entry, 'lightgreen')
801
+ _ << HtmlTags.video(this_entry)
802
+ _ << "<br>\n"
803
+ _ << "</div>\n"
804
+ else
805
+ if use_HTML_table_layout?
806
+ filesize_string = ' <span style="color: lightblue">'+
807
+ '(<b>filesize</b>: <b>'+
808
+ (File.size(this_entry).to_f / 1000.0).floor(0).to_s+
809
+ '</b> <b>kb</b>)'+
810
+ '</span>'
811
+
812
+ raw_description_of_the_image = File.basename(this_entry).
813
+ delete_suffix(File.extname(this_entry)).
814
+ tr('_',' ')
815
+ # =============================================================== #
816
+ # Next make the leading date, in dd.mm.yyyy format, bold:
817
+ # =============================================================== #
818
+ description_of_the_image = '<br><span style="font-size: 1.2em; color: gold;">'+
819
+ raw_description_of_the_image.sub(
820
+ /(\d{1,2}\.?\d{1,2}\.?\d{4,4})/,
821
+ '(<b>\1</b>)'
822
+ )+'</span>'
823
+ this_entry = File.basename(this_entry) # We try this line as of October 2022.
824
+ case index % n_rows?
825
+ when 0 # This would mean we should do a new row.
826
+ _ << "<tr style=\"width:25%;\"><td style=\"width:28%\">"
827
+ _ << "<a target=\"_blank\" href=\"#{this_entry}\">#{return_image(this_entry)}#{description_of_the_image}"
828
+ _ << "</a>#{filesize_string}</td>\n"
829
+ when (n_rows? - 3),
830
+ (n_rows? - 2)
831
+ _ << "<td style=\"width:28%\">"
832
+ _ << "<a target=\"_blank\" href=\"#{this_entry}\">#{return_image(this_entry)}#{description_of_the_image}"
833
+ _ << "</a>#{filesize_string}</td>\n"
834
+ when (n_rows? - 1)
835
+ _ << "<td style=\"width:28%\">"
836
+ _ << "<a target=\"_blank\" href=\"#{this_entry}\">#{return_image(this_entry)}#{description_of_the_image}"
837
+ _ << "</a>#{filesize_string}</td></tr>\n"
838
+ end
839
+ else
840
+ _ << return_image(this_entry)
841
+ end
842
+ end
843
+ }
844
+ end
845
+ set_content_of_the_html_page(_)
846
+ end
847
+
848
+ end
849
+
850
+ # =========================================================================== #
851
+ # === Cyberweb.create_webpage_for_images
852
+ # =========================================================================== #
853
+ def self.create_webpage_for_images(
854
+ i = ARGV
855
+ )
856
+ Cyberweb::ImagesToHtml.new(i) { :use_jquery }
857
+ end
858
+
859
+ end
860
+
861
+ if __FILE__ == $PROGRAM_NAME
862
+ require 'colours/colours_e_autoinclude.rb'
863
+ _ = Cyberweb::ImagesToHtml.new(ARGV, :do_not_run_yet) { :use_jquery }
864
+ _.append_to_the_commandline_arguments(:return_pwd) # This is the default.
865
+ # ========================================================================= #
866
+ # The next line of code could be used to designate a black background.
867
+ #
868
+ # _.background :black
869
+ #
870
+ # ========================================================================= #
871
+ # _.background :yellow
872
+ _.show_names
873
+ # _.scan_for_images_in_this_directory '$IMG/science'
874
+ # _.set_output_page_here('/Depot/Information/Images.html') # We store the data into this html file here.
875
+ # _.scan_for_images_in_this_directory '$IMG',true
876
+ # _.apply_filter 'only gifs'
877
+ _.run
878
+ end # cweb $MY_DATA/images/NJOY/