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
@@ -14,14 +14,52 @@ module Cyberweb
14
14
  require 'cyberweb/javascript/return_javascript.rb'
15
15
 
16
16
  # ========================================================================= #
17
- # === Cyberweb.load_this_external_javascript_file
17
+ # === Cyberweb.map_symbol_to_javascript_file
18
+ #
19
+ # This method assumes that the first argument given is a Symbol.
18
20
  # ========================================================================= #
19
- def self.load_this_external_javascript_file(i)
20
- return '<script src="'+i+'"></script>'+N
21
+ def self.map_symbol_to_javascript_file(
22
+ this_symbol,
23
+ path = ''
24
+ )
25
+ case this_symbol
26
+ # ===================================================================== #
27
+ # === snake
28
+ #
29
+ # This refers to the snake game in javascript.
30
+ # ===================================================================== #
31
+ when :snake,
32
+ :snake_game
33
+ this_symbol = "#{path}/javascript_code/games/snake.js"
34
+ # ===================================================================== #
35
+ # === tetris
36
+ #
37
+ # This refers to the tetris game in javascript.
38
+ # ===================================================================== #
39
+ when :tetris,
40
+ :tetris_game
41
+ this_symbol = "#{path}/javascript_code/games/tetris.js"
42
+ # ===================================================================== #
43
+ # === :tic_tac_toe
44
+ # ===================================================================== #
45
+ when :tic_tac_toe,
46
+ :tic_tac_toe_game
47
+ this_symbol = "#{path}/javascript_code/games/tic-tac-toe.js"
48
+ # ===================================================================== #
49
+ # === :fader
50
+ # ===================================================================== #
51
+ when :fader,
52
+ :fader_js
53
+ this_symbol = "#{path}/javascript_code/FADER.js" # path seems to be used only here.
54
+ else
55
+ return "Not registered Symbol `#{this_symbol}`. This is "\
56
+ "currently not allowed, thus we exit."
57
+ end
58
+ return this_symbol
21
59
  end
22
60
 
23
61
  # ========================================================================= #
24
- # === javascript_file
62
+ # === Cyberweb.javascript_file
25
63
  #
26
64
  # This will "load" a javascript file (actually, the browser will do the
27
65
  # loading part, in here we only generate the necessary string for this.)
@@ -45,26 +83,33 @@ module Cyberweb
45
83
  path = ''
46
84
  )
47
85
  if input.is_a? Symbol
48
- case input
49
- when :fader,
50
- :fader_js
51
- input = "#{path}DATA/CODE/javascript/FADER.js" # path seems to be used only here.
52
- end
86
+ input = map_symbol_to_javascript_file(input, path)
53
87
  end
54
- if is_html5?
88
+ if is_html5? # This clause is the default.
55
89
  return load_this_external_javascript_file(input)
56
90
  else
57
91
  # ===================================================================== #
58
92
  # The next line included the string type="text/javascript", but the
59
93
  # W3C validator states that this is unnecessary, so this has been
60
- # removed in August 2018. The validator's message was:
94
+ # removed in August 2018.
95
+ #
96
+ # The validator's message was:
97
+ #
61
98
  # "The type attribute is unnecessary for JavaScript resources."
99
+ #
62
100
  # ===================================================================== #
63
101
  return '<script src="'+input+'"></script>'+N
64
102
  end
65
103
  end; self.instance_eval { alias load_javascript javascript_file } # === Cyberweb.load_javascript
66
104
  self.instance_eval { alias javascript_file= javascript_file } # === Cyberweb.javascript_file=
67
105
 
106
+ # ========================================================================= #
107
+ # === Cyberweb.load_this_external_javascript_file
108
+ # ========================================================================= #
109
+ def self.load_this_external_javascript_file(i)
110
+ return '<script src="'+i+'"></script>'+N
111
+ end
112
+
68
113
  # ========================================================================= #
69
114
  # === Cyberweb.sanitize_javascript
70
115
  #
@@ -117,28 +162,6 @@ module Cyberweb
117
162
  return_javascript('document.write('+i+');')
118
163
  end
119
164
 
120
- # ========================================================================= #
121
- # === ejavascript
122
- #
123
- # Tap into the class JavascriptMagic since Aug 2011, then output the
124
- # result. It will invoke the method .return_javascript() (see above).
125
- #
126
- # It may not always be wanted to output the given javascript code
127
- # at hand. Thus, this behaviour may be subject to change eventually.
128
- # ========================================================================= #
129
- def ejavascript(i)
130
- ::Cyberweb.ejavascript(i)
131
- end; alias javascript_code= ejavascript # === javascript_code=
132
- alias ejavascript_code ejavascript # === ejavascript_code
133
- alias script_javascript ejavascript # === script_javascript
134
- alias escript_javascript ejavascript # === escript_javascript
135
- alias ejs ejavascript # === ejs
136
- alias use_this_javascript ejavascript # === use_this_javascript
137
- alias embed_javascript ejavascript # === embed_javascript
138
- alias embed_this_javascript_code ejavascript # === embed_this_javascript_code
139
- alias embed_this_javascript ejavascript # === embed_this_javascript_code
140
- alias javascript_code ejavascript # === javascript_code # experimental as of Nov 2014.
141
-
142
165
  # ========================================================================= #
143
166
  # === body_javascript_onload
144
167
  # ========================================================================= #
@@ -198,7 +221,7 @@ module Cyberweb
198
221
  array.each {|entry|
199
222
  _ << '<script src="'
200
223
  _ << use_this_path
201
- _ << 'CODE/javascript/'
224
+ _ << 'javascript_code/'
202
225
  _ << entry
203
226
  _ << '" '
204
227
  _ = _.ljust(48)
@@ -208,4 +231,26 @@ module Cyberweb
208
231
  _
209
232
  end
210
233
 
234
+ # ========================================================================= #
235
+ # === ejavascript
236
+ #
237
+ # Tap into the class JavascriptMagic since Aug 2011, then output the
238
+ # result. It will invoke the method .return_javascript() (see above).
239
+ #
240
+ # It may not always be wanted to output the given javascript code
241
+ # at hand. Thus, this behaviour may be subject to change eventually.
242
+ # ========================================================================= #
243
+ def ejavascript(i)
244
+ ::Cyberweb.ejavascript(i)
245
+ end; alias javascript_code= ejavascript # === javascript_code=
246
+ alias ejavascript_code ejavascript # === ejavascript_code
247
+ alias script_javascript ejavascript # === script_javascript
248
+ alias escript_javascript ejavascript # === escript_javascript
249
+ alias ejs ejavascript # === ejs
250
+ alias use_this_javascript ejavascript # === use_this_javascript
251
+ alias embed_javascript ejavascript # === embed_javascript
252
+ alias embed_this_javascript_code ejavascript # === embed_this_javascript_code
253
+ alias embed_this_javascript ejavascript # === embed_this_javascript_code
254
+ alias javascript_code ejavascript # === javascript_code # experimental as of Nov 2014.
255
+
211
256
  end
@@ -19,6 +19,20 @@ module Cyberweb
19
19
  css_style = '',
20
20
  javascript = ''
21
21
  )
22
+ if css_class.is_a?(Hash)
23
+ # ===================================================================== #
24
+ # === :css_style
25
+ # ===================================================================== #
26
+ if css_class.has_key?(:css_style)
27
+ css_style = css_class.delete(:css_style)
28
+ end
29
+ # ===================================================================== #
30
+ # This entry point should come last, within that given Hash.
31
+ # ===================================================================== #
32
+ if css_class.has_key?(:css_class)
33
+ css_class = css_class.delete(:css_class)
34
+ end
35
+ end
22
36
  # ======================================================================= #
23
37
  # === Handle blocks next
24
38
  # ======================================================================= #
@@ -45,23 +59,45 @@ function UpdateClock() {
45
59
  clock_id = 0;
46
60
  }
47
61
  date_object = new Date()
48
- xxx = date_object.getSeconds()
49
- if(xxx <10) {
50
- xxx = "0"+xxx
62
+ n_seconds = date_object.getSeconds()
63
+ if (n_seconds < 10) {
64
+ n_seconds = "0"+n_seconds
51
65
  }
52
- document.FormClock.Time.value = ""+date_object.getHours()+":"+date_object.getMinutes()+":"+xxx
66
+ document.form_displaying_a_simple_clock.Time.value = ""+
67
+ date_object.getHours().toString().padStart(2, \'0\')+
68
+ ":"+
69
+ date_object.getMinutes().toString().padStart(2, \'0\')+
70
+ ":"+
71
+ n_seconds
53
72
  clock_id = setTimeout("UpdateClock()", 1000);
54
73
  }
55
- function StartClock() { clock_id = setTimeout("UpdateClock()", 500); }
56
- function KillClock() { if(clock_id) { clearTimeout(clock_id); clock_id = 0; }}'
57
- div(css_class, the_id, css_style, javascript){
58
- self.javascript 'StartClock()' # Start our clock here.
59
- # Give the form the name "FormClock" next.
60
- e '<form name="FormClock">'
61
- input(:text,'','pad5px s8px','Time',
62
- 'border:5px solid #040a17;width:150px;'\
63
- 'background-color: #daffbf;'+css_style,
64
- 'c')
74
+ function start_the_clock() { clock_id = setTimeout("UpdateClock()", 500); }
75
+ function kill_the_clock() { if(clock_id) { clearTimeout(clock_id); clock_id = 0; }}'
76
+ div(
77
+ css_class,
78
+ the_id,
79
+ css_style,
80
+ javascript
81
+ ){
82
+ if css_style
83
+ css_style = css_style.dup
84
+ # Prepend CSS style to the input formular.
85
+ css_style.prepend(
86
+ 'border: 3px solid #040a17;
87
+ width: 145px;'\
88
+ 'background-color: #daffbf;'+css_style
89
+ )
90
+ end
91
+ self.javascript 'start_the_clock()' # Start our clock here.
92
+ # ===================================================================== #
93
+ # Give the form the name "form_displaying_a_simple_clock" next.
94
+ # ===================================================================== #
95
+ e '<form name="form_displaying_a_simple_clock">'
96
+ input(
97
+ :text,'','pad5px s8px','Time',
98
+ css_style,
99
+ 'c'
100
+ )
65
101
  cform
66
102
  }
67
103
  end; alias javascript_clock display_clock # === javascript_clock
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === Cyberweb::JavascriptHelper
6
+ # =========================================================================== #
7
+ # require 'cyberweb/javascript/javascript_helper/javascript_helper.rb'
8
+ # Cyberweb::JavascriptHelper.new(ARGV)
9
+ # =========================================================================== #
10
+ module Cyberweb
11
+
12
+ class JavascriptHelper # === Cyberweb::JavascriptHelper
13
+
14
+ # ========================================================================= #
15
+ # === initialize
16
+ # ========================================================================= #
17
+ def initialize(
18
+ i = ARGV,
19
+ run_already = true
20
+ )
21
+ reset
22
+ run if run_already
23
+ end
24
+
25
+ # ========================================================================= #
26
+ # === reset (reset tag)
27
+ # ========================================================================= #
28
+ def reset
29
+ # ======================================================================= #
30
+ # === @content
31
+ # ======================================================================= #
32
+ @content = ''.dup
33
+ # ======================================================================= #
34
+ # === @work_on_this_id
35
+ # ======================================================================= #
36
+ @work_on_this_id = nil
37
+ end
38
+
39
+ # ========================================================================= #
40
+ # === set_work_on_this_id
41
+ # ========================================================================= #
42
+ def set_work_on_this_id(i)
43
+ @work_on_this_id = i
44
+ end; alias work_on_this_id= set_work_on_this_id # === work_on_this_id=
45
+
46
+ # ========================================================================= #
47
+ # === set_content
48
+ # ========================================================================= #
49
+ def set_content(i)
50
+ @content = i
51
+ end; alias content= set_content # === content=
52
+
53
+ # ========================================================================= #
54
+ # === run
55
+ # ========================================================================= #
56
+ def run
57
+ end
58
+
59
+ end; end
@@ -20,11 +20,15 @@ module Cyberweb
20
20
  # ========================================================================= #
21
21
  def self.download_latest_jquery
22
22
  file = config_file?
23
- jquery_version_string = YAML.load_file(file)['jquery_version']
24
- jquery_url = "https://code.jquery.com/jquery-#{jquery_version_string}.js"
25
- _ = "wget #{jquery_url}"
26
- puts _
27
- system _
23
+ if File.exist? file
24
+ jquery_version_string = YAML.load_file(file)['jquery_version']
25
+ jquery_url = "https://code.jquery.com/jquery-#{jquery_version_string}.js"
26
+ _ = "wget #{jquery_url}"
27
+ puts _
28
+ system _
29
+ else
30
+ puts "No file exists at #{file}."
31
+ end
28
32
  end
29
33
 
30
34
  end
@@ -19,7 +19,9 @@ module Cyberweb
19
19
  which_opacity_value_to_use = '0.92'
20
20
  )
21
21
  which_opacity_value_to_use = which_opacity_value_to_use.to_s
22
+ # ======================================================================= #
22
23
  # The id must be a string.
24
+ # ======================================================================= #
23
25
  use_this_id = use_this_id.to_s.dup # Work on a copy.
24
26
  unless use_this_id.start_with? '#'
25
27
  use_this_id.prepend('#')
@@ -63,7 +65,9 @@ $(document).ready(function(){
63
65
  # ========================================================================= #
64
66
  # === return_on_click_change_opacity
65
67
  # ========================================================================= #
66
- def return_on_click_change_opacity(a = 'pic', b = '0.92')
68
+ def return_on_click_change_opacity(
69
+ a = 'pic', b = '0.92'
70
+ )
67
71
  Cyberweb.return_on_click_change_opacity(a, b)
68
72
  end; alias string_highlight return_on_click_change_opacity # === string_highlight
69
73
 
@@ -2,6 +2,8 @@
2
2
  # Encoding: UTF-8
3
3
  # frozen_string_literal: true
4
4
  # =========================================================================== #
5
+ # require 'on_click_hide.rb'
6
+ # =========================================================================== #
5
7
  module Cyberweb
6
8
 
7
9
  # ========================================================================= #
@@ -8,12 +8,15 @@ module Cyberweb
8
8
 
9
9
  # ========================================================================= #
10
10
  # === alert
11
+ #
12
+ # This method can be used as a javascript-alert "box". It will show
13
+ # notifications to the user.
11
14
  # ========================================================================= #
12
15
  def alert(
13
16
  msg_to_display = 'Alert!'
14
17
  )
15
18
  popup(msg_to_display, :alert)
16
- end
19
+ end; alias javascript_alert alert # === javascript_alert
17
20
 
18
21
  # ========================================================================= #
19
22
  # === Cyberweb.popup
@@ -67,7 +70,7 @@ module Cyberweb
67
70
  self.instance_eval { alias message popup } # === Cyberweb.message
68
71
 
69
72
  # ========================================================================= #
70
- # === popup
73
+ # === popup (popup tag)
71
74
  # ========================================================================= #
72
75
  def popup(
73
76
  a = 'Hello World!',
@@ -14,7 +14,10 @@ module Cyberweb
14
14
  )
15
15
  this_id = this_id.to_s
16
16
  case this_id # Treat a few IDs in a special.
17
- when 'last','last_id','last_id_used','last_image'
17
+ when 'last',
18
+ 'last_id',
19
+ 'last_id_used',
20
+ 'last_image'
18
21
  this_id = @array_registered_ids[-1] if ARRAY_REGISTERED_IDS.size > 0
19
22
  end
20
23
  # ======================================================================= #
@@ -1,5 +1,5 @@
1
1
  This directory may contain javascript code that could be useful
2
- for other people.
2
+ for users of the cyberweb project.
3
3
 
4
4
  A requirement is that the javascript code stored here is extensively
5
5
  documented - or, at the least, sufficiently documented. It should
@@ -1,6 +1,36 @@
1
- /******************************************************************
1
+ /*
2
+ * === change_the_colour_to()
3
+ *
4
+ * Use this function to change the colour of the text at
5
+ * hand.
6
+ */
7
+ function change_the_colour_to(
8
+ this_colour,
9
+ work_on_this_id = "our_id"
10
+ )
11
+ {
12
+ document.getElementById(work_on_this_id).style.color = this_colour;
13
+ }
14
+
15
+ /*
16
+ * === show_source()
17
+ *
18
+ * This simple function just shows the source of a webpage.
19
+ *
20
+ */
21
+ function show_source()
22
+ {
23
+ alert(document.documentElement.innerHTML);
24
+ }
25
+
26
+ /*
2
27
  *
3
- * euro_nach_schilling()
28
+ * === euro_nach_schilling()
29
+ *
30
+ * Usage example:
31
+ *
32
+ * euro_nach_schilling(5)
33
+ *
4
34
  */
5
35
  function euro_nach_schilling()
6
36
  {
@@ -21,17 +51,6 @@ function schilling_nach_euro()
21
51
  document.euroformular.euro.value = e
22
52
  }
23
53
 
24
- /*
25
- * === show_source()
26
- *
27
- * This simple function just shows the source of a webpage.
28
- *
29
- */
30
- function show_source()
31
- {
32
- alert(document.documentElement.innerHTML);
33
- }
34
-
35
54
  function calc_euro(){
36
55
  EuroBetrag = parseFloat(document.EURO.Betrag.value);
37
56
  result1 = (Math.round(EuroBetrag * 13.76030*100/100))
@@ -43,6 +62,7 @@ function calc_euro(){
43
62
  /*
44
63
  * === set_new_background_colour()
45
64
  *
65
+ * This function requires the RGB value.
46
66
  */
47
67
  function set_new_background_colour_via_RGB(r,g,b) {
48
68
  var background_object = new Object_setColour(r,g,b)
@@ -73,6 +93,7 @@ function toggle(target_id)
73
93
  }
74
94
 
75
95
  /*
96
+ * === toggle_visibility()
76
97
  *
77
98
  */
78
99
  function toggle_visibility(id)
@@ -112,6 +133,11 @@ function reveal(d) {
112
133
  * === popup()
113
134
  *
114
135
  * An alias to alert.
136
+ *
137
+ * Usage example:
138
+ *
139
+ * popup("Hello world!")
140
+ *
115
141
  */
116
142
  function popup(i)
117
143
  {
@@ -210,22 +236,22 @@ function only_numbers(myfield, e, dec)
210
236
  var keychar;
211
237
 
212
238
  if (window.event)
213
- key = window.event.keyCode;
239
+ key = window.event.keyCode;
214
240
  else if (e)
215
- key = e.which;
241
+ key = e.which;
216
242
  else
217
- return true;
243
+ return true;
218
244
 
219
245
  keychar = String.fromCharCode(key);
220
246
 
221
247
  // control keys
222
248
  if ((key==null) || (key==0) || (key==8) ||
223
249
  (key==9) || (key==13) || (key==27) )
224
- return true;
250
+ return true;
225
251
 
226
252
  // numbers
227
253
  else if ((("0123456789").indexOf(keychar) > -1))
228
- return true;
254
+ return true;
229
255
 
230
256
  // decimal point jump
231
257
  else if (dec && (keychar == "."))
@@ -234,7 +260,7 @@ function only_numbers(myfield, e, dec)
234
260
  return false;
235
261
  }
236
262
  else
237
- return false;
263
+ return false;
238
264
  }
239
265
 
240
266
  // ============================================================================
@@ -247,12 +273,12 @@ function puts(i)
247
273
  document.write(i);
248
274
  }
249
275
 
250
-
251
- // ============================================================================
252
- // === to_bold
253
- //
254
- // <a href="#" onclick="JavaScript:to_bold(this);">blabla</a>
255
- // ============================================================================
276
+ /*
277
+ * === to_bold
278
+ *
279
+ * <a href="#" onclick="JavaScript:to_bold(this);">blabla</a>
280
+ *
281
+ */
256
282
  function to_bold(obj)
257
283
  {
258
284
  obj.style.fontWeight="bold"
@@ -0,0 +1,5 @@
1
+ $(document).ready(function(){
2
+ $(document).bind("contextmenu", function(e){
3
+ return false;
4
+ });
5
+ });
@@ -0,0 +1,113 @@
1
+ const cvs = document.getElementById("snake_canvas");
2
+ const ctx = cvs.getContext("2d");
3
+
4
+ // create the unit
5
+
6
+ // load images
7
+ ground.src = "ground.png";
8
+
9
+ const foodImg = new Image();
10
+ foodImg.src = "food.png";
11
+
12
+ // create the snake
13
+ let snake = [];
14
+
15
+ snake[0] = {
16
+ x : 9 * box,
17
+ y : 10 * box
18
+ };
19
+
20
+ // create the food
21
+ let food = {
22
+ x : Math.floor(Math.random()*17+1) * box,
23
+ y : Math.floor(Math.random()*15+3) * box
24
+ }
25
+
26
+ // create the score var
27
+ let score = 0;
28
+
29
+ //control the snake
30
+ let d;
31
+
32
+ document.addEventListener("keydown", direction);
33
+
34
+ function direction(event){
35
+ let key = event.keyCode;
36
+ if( key == 37 && d != "RIGHT"){
37
+ d = "LEFT";
38
+ } else if(key == 38 && d != "DOWN"){
39
+ d = "UP";
40
+ } else if(key == 39 && d != "LEFT"){
41
+ d = "RIGHT";
42
+ } else if(key == 40 && d != "UP"){
43
+ d = "DOWN";
44
+ }
45
+ }
46
+
47
+ // cheack collision function
48
+ function collision(head,array){
49
+ for(let i = 0; i < array.length; i++){
50
+ if(head.x == array[i].x && head.y == array[i].y){
51
+ return true;
52
+ }
53
+ }
54
+ return false;
55
+ }
56
+
57
+ // draw everything to the canvas
58
+ function draw(){
59
+
60
+ ctx.drawImage(ground,0,0);
61
+
62
+ for( let i = 0; i < snake.length ; i++){
63
+ ctx.fillStyle = ( i == 0 )? "green" : "white";
64
+ ctx.fillRect(snake[i].x,snake[i].y,box,box);
65
+
66
+ ctx.strokeStyle = "red";
67
+ ctx.strokeRect(snake[i].x,snake[i].y,box,box);
68
+ }
69
+
70
+ ctx.drawImage(foodImg, food.x, food.y);
71
+
72
+ // old head position
73
+ let snakeX = snake[0].x;
74
+ let snakeY = snake[0].y;
75
+
76
+ // which direction to use:
77
+ if( d == "LEFT") snakeX -= box;
78
+ if( d == "UP") snakeY -= box;
79
+ if( d == "RIGHT") snakeX += box;
80
+ if( d == "DOWN") snakeY += box;
81
+
82
+ // if the snake eats the food
83
+ if(snakeX == food.x && snakeY == food.y){
84
+ score++;
85
+ food = {
86
+ x : Math.floor(Math.random()*17+1) * box,
87
+ y : Math.floor(Math.random()*15+3) * box
88
+ }
89
+ // we don't remove the tail
90
+ } else {
91
+ // remove the tail
92
+ snake.pop();
93
+ }
94
+
95
+ // add new Head
96
+ let newHead = {
97
+ x : snakeX,
98
+ y : snakeY
99
+ }
100
+
101
+ // game over
102
+ if(snakeX < box || snakeX > 17 * box || snakeY < 3*box || snakeY > 17*box || collision(newHead,snake)){
103
+ clearInterval(game);
104
+ }
105
+
106
+ snake.unshift(newHead);
107
+
108
+ ctx.fillStyle = "white";
109
+ ctx.font = "45px Changa one";
110
+ ctx.fillText(score,2*box,1.6*box);
111
+ }
112
+
113
+ // call draw function every 100 ms