cyberweb 0.4.174

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

Potentially problematic release.


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

Files changed (573) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +3259 -0
  3. data/bin/cyberweb +27 -0
  4. data/cyberweb.gemspec +119 -0
  5. data/doc/AUTHORS.md +12 -0
  6. data/doc/CONVENTIONS.md +7 -0
  7. data/doc/CYBERWEB_TUTORIAL.cgi +43 -0
  8. data/doc/DOCUMENTATION_FOR_CYBERSPRAWL.md +50 -0
  9. data/doc/FUTURE_DESIGN_GOAL_CONSIDERATIONS.md +13 -0
  10. data/doc/JQUERY.md +122 -0
  11. data/doc/MOUSE.md +80 -0
  12. data/doc/README.gen +3231 -0
  13. data/doc/RENDER_WEB_BASE.md +46 -0
  14. data/doc/USAGE.md +246 -0
  15. data/doc/configuration/configuration.md +23 -0
  16. data/doc/deprecations.md +32 -0
  17. data/doc/html_characters.md +15 -0
  18. data/doc/todo/TODO_FOR_THE_CYBERWEB_PROJECT.md +1089 -0
  19. data/examples/README.md +4 -0
  20. data/examples/advanced/delayed_update_of_the_body_via_javascript.cgi +38 -0
  21. data/examples/advanced/hybrid_experiment.cgi +108 -0
  22. data/examples/advanced/larger_image_on_mouse_over_example.cgi +35 -0
  23. data/examples/advanced/no_right_click.cgi +26 -0
  24. data/examples/advanced/objectified_html_tags.cgi +35 -0
  25. data/examples/advanced/simple_calculator.cgi +42 -0
  26. data/examples/advanced/simple_form_example.cgi +38 -0
  27. data/examples/css/blue_border.html +28 -0
  28. data/examples/css/caret_colour_example.html +22 -0
  29. data/examples/css/css_border_spacing_example.html +69 -0
  30. data/examples/css/css_bubbles.html +43 -0
  31. data/examples/css/css_clock.html +344 -0
  32. data/examples/css/css_drag_and_drop.html +89 -0
  33. data/examples/css/css_neon_glow_effects.html +317 -0
  34. data/examples/css/css_text_decoration_example.html +70 -0
  35. data/examples/css/css_tooltip.html +44 -0
  36. data/examples/css/fade_in_and_fade_out_effect.html +66 -0
  37. data/examples/css/font_size_examples.html +40 -0
  38. data/examples/css/letter_spacing_example.cgi +36 -0
  39. data/examples/css/meter_example.html +31 -0
  40. data/examples/css/on_mouse_button_pressed.html +41 -0
  41. data/examples/css/planets.html +187 -0
  42. data/examples/css/scale_example.html +25 -0
  43. data/examples/css/shadow_example_in_CSS.cgi +30 -0
  44. data/examples/css/sticky_div_example.html +56 -0
  45. data/examples/css/stitched_div.html +36 -0
  46. data/examples/csv/README.md +1 -0
  47. data/examples/csv/sample.csv +10 -0
  48. data/examples/example1.rb +7 -0
  49. data/examples/flip_card_example/flip_card_example.html +72 -0
  50. data/examples/frames/frame_left.html +1 -0
  51. data/examples/frames/frame_right.html +1 -0
  52. data/examples/html/README.md +1 -0
  53. data/examples/html/abbr_example.html +25 -0
  54. data/examples/html/base64_image_example.html +26 -0
  55. data/examples/html/colour_wheel.html +1389 -0
  56. data/examples/html/column_width_example.html +34 -0
  57. data/examples/html/custom_cursor.html +103 -0
  58. data/examples/html/draggable_paragraph.html +12 -0
  59. data/examples/html/fieldset_example.html +25 -0
  60. data/examples/html/frames_example.html +7 -0
  61. data/examples/html/glyph_example.html +43 -0
  62. data/examples/html/hbox_and_vbox_example.html +65 -0
  63. data/examples/html/href_examples.html +27 -0
  64. data/examples/html/input_autofocus_example.html +16 -0
  65. data/examples/html/larger_image_on_mouse_over_example.html +30 -0
  66. data/examples/html/ordered_and_unordered_bulletsin.html +33 -0
  67. data/examples/html/play_video_example.html +13 -0
  68. data/examples/html/readonly_textarea_example.html +23 -0
  69. data/examples/html/remote_image_example.html +10 -0
  70. data/examples/html/simple_unordered_list.html +16 -0
  71. data/examples/html/table_with_header_example.html +27 -0
  72. data/examples/html/two_columns_flex_example.html +39 -0
  73. data/examples/javascript/README.md +2 -0
  74. data/examples/javascript/arrays/arrays_example_in_javascript.html +16 -0
  75. data/examples/javascript/delay_example/delay_example.html +46 -0
  76. data/examples/javascript/drag_support/drag_support.html +37 -0
  77. data/examples/javascript/jquery_drag_and_drop/drag_and_drop_image_example.html +33 -0
  78. data/examples/javascript/on_click_event_hello_world/on_click_event_hello_world.html +21 -0
  79. data/examples/javascript/rgb_to_hex/rgb_to_hex.html +15 -0
  80. data/examples/javascript/screen_resolution/screen_resolution.html +20 -0
  81. data/examples/javascript/select_everything/select_everything.html +14 -0
  82. data/examples/javascript/write_into_a_file/write_into_a_file.html +39 -0
  83. data/examples/rack/README.md +4 -0
  84. data/examples/rack/example_with_html_template.rb +123 -0
  85. data/examples/rack/example_with_rack_and_cyberweb_showing_how_to_use_images.rb +56 -0
  86. data/examples/rack/hello_world_example_with_rack.rb +45 -0
  87. data/examples/rack/lobster.rb +79 -0
  88. data/examples/rack/rack_env.rb +10 -0
  89. data/examples/rack/standalone_example.rb +26 -0
  90. data/examples/show_greek_letters.rb +3 -0
  91. data/examples/simple/on_click_event_hello_world.cgi +34 -0
  92. data/examples/sinatra/001_your_ip_address_is.rb +8 -0
  93. data/examples/sinatra/002_the_request_object.rb +16 -0
  94. data/examples/sinatra/003_hello_world_example.rb +82 -0
  95. data/examples/sinatra/004_splat_example.rb +10 -0
  96. data/examples/sinatra/005_attachment_example.rb +11 -0
  97. data/examples/sinatra/006_outer_self_example.rb +8 -0
  98. data/examples/sinatra/007_mime_type_example.rb +17 -0
  99. data/examples/sinatra/008_post_example.rb +55 -0
  100. data/examples/table_example.rb +37 -0
  101. data/images/cyberweb_favicon.png +0 -0
  102. data/images/cyberweb_logo.png +0 -0
  103. data/images/cyberweb_theme.png +0 -0
  104. data/lib/cyberweb/and_sinatra_base.rb +9 -0
  105. data/lib/cyberweb/autoinclude.rb +20 -0
  106. data/lib/cyberweb/autoinclude_webobject.rb +14 -0
  107. data/lib/cyberweb/base/base.rb +41 -0
  108. data/lib/cyberweb/base/colours.rb +69 -0
  109. data/lib/cyberweb/base/constants.rb +18 -0
  110. data/lib/cyberweb/base/encoding.rb +19 -0
  111. data/lib/cyberweb/base/misc.rb +239 -0
  112. data/lib/cyberweb/base/reset.rb +23 -0
  113. data/lib/cyberweb/base/save_file.rb +22 -0
  114. data/lib/cyberweb/cascading_style_sheets/README.md +4 -0
  115. data/lib/cyberweb/cascading_style_sheets/admonition.css +33 -0
  116. data/lib/cyberweb/cascading_style_sheets/balloon.css +344 -0
  117. data/lib/cyberweb/cascading_style_sheets/border.css +202 -0
  118. data/lib/cyberweb/cascading_style_sheets/code.css +58 -0
  119. data/lib/cyberweb/cascading_style_sheets/colours.css +476 -0
  120. data/lib/cyberweb/cascading_style_sheets/default.css +1836 -0
  121. data/lib/cyberweb/cascading_style_sheets/div.css +26 -0
  122. data/lib/cyberweb/cascading_style_sheets/fonts.css +365 -0
  123. data/lib/cyberweb/cascading_style_sheets/links.css +207 -0
  124. data/lib/cyberweb/cascading_style_sheets/margin.css +677 -0
  125. data/lib/cyberweb/cascading_style_sheets/menu.css +37 -0
  126. data/lib/cyberweb/cascading_style_sheets/message_boxes.css +48 -0
  127. data/lib/cyberweb/cascading_style_sheets/misc.css +162 -0
  128. data/lib/cyberweb/cascading_style_sheets/popup.css +63 -0
  129. data/lib/cyberweb/cascading_style_sheets/rpg.css +51 -0
  130. data/lib/cyberweb/cascading_style_sheets/ruby_regexes.css +33 -0
  131. data/lib/cyberweb/cascading_style_sheets/template2.css +18 -0
  132. data/lib/cyberweb/cascading_style_sheets/text_shadow.css +19 -0
  133. data/lib/cyberweb/cascading_style_sheets/tooltip.css +36 -0
  134. data/lib/cyberweb/cgi/README.md +6 -0
  135. data/lib/cyberweb/cgi/cgi.rb +340 -0
  136. data/lib/cyberweb/cgi/constants.rb +121 -0
  137. data/lib/cyberweb/cgi/cookie.rb +218 -0
  138. data/lib/cyberweb/cgi/core.rb +638 -0
  139. data/lib/cyberweb/cgi/exceptions.rb +223 -0
  140. data/lib/cyberweb/cgi/html.rb +1025 -0
  141. data/lib/cyberweb/cgi/mod_ruby_exception_printer.rb +40 -0
  142. data/lib/cyberweb/cgi/query_extension.rb +431 -0
  143. data/lib/cyberweb/cgi/session/file_store.rb +131 -0
  144. data/lib/cyberweb/cgi/session/memory_store.rb +90 -0
  145. data/lib/cyberweb/cgi/session/pstore.rb +127 -0
  146. data/lib/cyberweb/cgi/session.rb +444 -0
  147. data/lib/cyberweb/cgi/tag_maker.rb +94 -0
  148. data/lib/cyberweb/cgi/util.rb +239 -0
  149. data/lib/cyberweb/charts/README.md +2 -0
  150. data/lib/cyberweb/charts/google_charts.rb +51 -0
  151. data/lib/cyberweb/classes/simple_form.rb +55 -0
  152. data/lib/cyberweb/classes/tooltips.rb +169 -0
  153. data/lib/cyberweb/coloured_tags/coloured_tags.rb +3099 -0
  154. data/lib/cyberweb/colours/colour_chart.rb +117 -0
  155. data/lib/cyberweb/colours/colours.rb +50 -0
  156. data/lib/cyberweb/colours/random_colour.rb +28 -0
  157. data/lib/cyberweb/colours/sanitize_for_colours.rb +95 -0
  158. data/lib/cyberweb/commandline/commandline_interface.rb +49 -0
  159. data/lib/cyberweb/configuration/configuration.rb +66 -0
  160. data/lib/cyberweb/configuration/load_the_configuration_file.rb +73 -0
  161. data/lib/cyberweb/constants/array_images.rb +21 -0
  162. data/lib/cyberweb/constants/array_local_css_files.rb +35 -0
  163. data/lib/cyberweb/constants/array_predefined_constants.rb +23 -0
  164. data/lib/cyberweb/constants/configuration_file.rb +33 -0
  165. data/lib/cyberweb/constants/constants.rb +9 -0
  166. data/lib/cyberweb/constants/file_constants.rb +16 -0
  167. data/lib/cyberweb/constants/http_status_codes.rb +42 -0
  168. data/lib/cyberweb/constants/nl.rb +22 -0
  169. data/lib/cyberweb/constants/project_constants.rb +99 -0
  170. data/lib/cyberweb/constants/roebe.rb +28 -0
  171. data/lib/cyberweb/constants/standalone_constants.rb +309 -0
  172. data/lib/cyberweb/controller/README.md +4 -0
  173. data/lib/cyberweb/controller/webobject_controller.rb +50 -0
  174. data/lib/cyberweb/csv/README.md +2 -0
  175. data/lib/cyberweb/csv/csv.rb +58 -0
  176. data/lib/cyberweb/cybersprawl +1 -0
  177. data/lib/cyberweb/debug/debug.rb +69 -0
  178. data/lib/cyberweb/encoding/encoding.rb +84 -0
  179. data/lib/cyberweb/erb/test.rhtml +81 -0
  180. data/lib/cyberweb/erb/test_template.erb +9 -0
  181. data/lib/cyberweb/evaluate_from_the_same_named_file_then_serve.rb +9 -0
  182. data/lib/cyberweb/favicon/favicon.rb +196 -0
  183. data/lib/cyberweb/generator/README.md +2 -0
  184. data/lib/cyberweb/generator/cgi.rb +201 -0
  185. data/lib/cyberweb/generator/class.rb +25 -0
  186. data/lib/cyberweb/generator/static_webpage.rb +162 -0
  187. data/lib/cyberweb/generator/webpage_for_images.rb +553 -0
  188. data/lib/cyberweb/help/help.rb +29 -0
  189. data/lib/cyberweb/html_codes/README.md +15 -0
  190. data/lib/cyberweb/html_codes/greek_letters.rb +204 -0
  191. data/lib/cyberweb/html_tags/README.md +3 -0
  192. data/lib/cyberweb/html_tags/a.rb +65 -0
  193. data/lib/cyberweb/html_tags/accesskey.rb +25 -0
  194. data/lib/cyberweb/html_tags/blockquote.rb +56 -0
  195. data/lib/cyberweb/html_tags/body.rb +14 -0
  196. data/lib/cyberweb/html_tags/br.rb +19 -0
  197. data/lib/cyberweb/html_tags/button.rb +110 -0
  198. data/lib/cyberweb/html_tags/canvas.rb +59 -0
  199. data/lib/cyberweb/html_tags/chtml.rb +14 -0
  200. data/lib/cyberweb/html_tags/div.rb +163 -0
  201. data/lib/cyberweb/html_tags/fieldset.rb +67 -0
  202. data/lib/cyberweb/html_tags/figure.rb +72 -0
  203. data/lib/cyberweb/html_tags/form.rb +203 -0
  204. data/lib/cyberweb/html_tags/h1.rb +75 -0
  205. data/lib/cyberweb/html_tags/h2.rb +73 -0
  206. data/lib/cyberweb/html_tags/h3.rb +58 -0
  207. data/lib/cyberweb/html_tags/h4.rb +60 -0
  208. data/lib/cyberweb/html_tags/h5.rb +54 -0
  209. data/lib/cyberweb/html_tags/h6.rb +54 -0
  210. data/lib/cyberweb/html_tags/hr.rb +22 -0
  211. data/lib/cyberweb/html_tags/html_tags.rb +240 -0
  212. data/lib/cyberweb/html_tags/i.rb +50 -0
  213. data/lib/cyberweb/html_tags/img.rb +294 -0
  214. data/lib/cyberweb/html_tags/input.rb +345 -0
  215. data/lib/cyberweb/html_tags/label.rb +63 -0
  216. data/lib/cyberweb/html_tags/legend.rb +56 -0
  217. data/lib/cyberweb/html_tags/li.rb +67 -0
  218. data/lib/cyberweb/html_tags/map.rb +31 -0
  219. data/lib/cyberweb/html_tags/nav.rb +63 -0
  220. data/lib/cyberweb/html_tags/object.rb +56 -0
  221. data/lib/cyberweb/html_tags/ol.rb +56 -0
  222. data/lib/cyberweb/html_tags/option.rb +61 -0
  223. data/lib/cyberweb/html_tags/p.rb +90 -0
  224. data/lib/cyberweb/html_tags/pre.rb +164 -0
  225. data/lib/cyberweb/html_tags/section.rb +33 -0
  226. data/lib/cyberweb/html_tags/select.rb +100 -0
  227. data/lib/cyberweb/html_tags/span.rb +338 -0
  228. data/lib/cyberweb/html_tags/strong.rb +39 -0
  229. data/lib/cyberweb/html_tags/table.rb +273 -0
  230. data/lib/cyberweb/html_tags/tbody.rb +24 -0
  231. data/lib/cyberweb/html_tags/td.rb +214 -0
  232. data/lib/cyberweb/html_tags/textarea.rb +138 -0
  233. data/lib/cyberweb/html_tags/th.rb +68 -0
  234. data/lib/cyberweb/html_tags/thead.rb +36 -0
  235. data/lib/cyberweb/html_tags/tr.rb +97 -0
  236. data/lib/cyberweb/html_tags/ul.rb +51 -0
  237. data/lib/cyberweb/html_template/html_template.rb +352 -0
  238. data/lib/cyberweb/images/embed_this_image.rb +37 -0
  239. data/lib/cyberweb/images/images.rb +58 -0
  240. data/lib/cyberweb/images/is_image.rb +22 -0
  241. data/lib/cyberweb/images/path_to_images.rb +60 -0
  242. data/lib/cyberweb/images/real/README.md +6 -0
  243. data/lib/cyberweb/images/remove_this_substring_from_all_images.rb +44 -0
  244. data/lib/cyberweb/images/standalone_drag_and_drop_this_image.rb +64 -0
  245. data/lib/cyberweb/images/string_image.rb +399 -0
  246. data/lib/cyberweb/images_base64_encoded/AUSRUFUNGSZEICHEN.png.md +1 -0
  247. data/lib/cyberweb/images_base64_encoded/BLUEARROW.png.md +1 -0
  248. data/lib/cyberweb/images_base64_encoded/BUBBLE.png.md +1 -0
  249. data/lib/cyberweb/images_base64_encoded/CAT.png.md +1 -0
  250. data/lib/cyberweb/images_base64_encoded/CAUTION.png.md +1 -0
  251. data/lib/cyberweb/images_base64_encoded/CHEERING_PERSON.png.md +1 -0
  252. data/lib/cyberweb/images_base64_encoded/CURSOR.png.md +1 -0
  253. data/lib/cyberweb/images_base64_encoded/DOT_01.png.md +5 -0
  254. data/lib/cyberweb/images_base64_encoded/DUCKY.png.md +1 -0
  255. data/lib/cyberweb/images_base64_encoded/ELEPHANT.png.md +1 -0
  256. data/lib/cyberweb/images_base64_encoded/HALLOWEEN.png.md +1 -0
  257. data/lib/cyberweb/images_base64_encoded/HANGING_MONKEY.png.md +1 -0
  258. data/lib/cyberweb/images_base64_encoded/LENS.png.md +1 -0
  259. data/lib/cyberweb/images_base64_encoded/README.md +2 -0
  260. data/lib/cyberweb/images_base64_encoded/TU_WIEN_LOGO.png.md +1 -0
  261. data/lib/cyberweb/images_base64_encoded/VOGEL.png.md +1 -0
  262. data/lib/cyberweb/io/README.md +1 -0
  263. data/lib/cyberweb/io/io.rb +19 -0
  264. data/lib/cyberweb/javascript/drag_and_drop.rb +105 -0
  265. data/lib/cyberweb/javascript/dragula_collection.rb +54 -0
  266. data/lib/cyberweb/javascript/javascript.rb +211 -0
  267. data/lib/cyberweb/javascript/javascript_bundle.rb +223 -0
  268. data/lib/cyberweb/javascript/javascript_clock.rb +69 -0
  269. data/lib/cyberweb/javascript/javascript_last_modified.rb +27 -0
  270. data/lib/cyberweb/javascript/javascript_magic.rb +150 -0
  271. data/lib/cyberweb/javascript/javascript_selectable.rb +24 -0
  272. data/lib/cyberweb/javascript/jquery.rb +30 -0
  273. data/lib/cyberweb/javascript/on_click_change_opacity.rb +97 -0
  274. data/lib/cyberweb/javascript/on_click_hide.rb +63 -0
  275. data/lib/cyberweb/javascript/popup.rb +80 -0
  276. data/lib/cyberweb/javascript/print_javascript.rb +33 -0
  277. data/lib/cyberweb/javascript/registered_javascript_methods.rb +30 -0
  278. data/lib/cyberweb/javascript/resize.rb +28 -0
  279. data/lib/cyberweb/javascript/return_javascript.rb +48 -0
  280. data/lib/cyberweb/javascript/scroll.rb +17 -0
  281. data/lib/cyberweb/javascript/snoweffect.rb +122 -0
  282. data/lib/cyberweb/javascript_code/README.md +6 -0
  283. data/lib/cyberweb/javascript_code/chmod_displayer.js +74 -0
  284. data/lib/cyberweb/javascript_code/custom_functions.js +267 -0
  285. data/lib/cyberweb/javascript_code/jquery/jquery-3.6.0.js +10881 -0
  286. data/lib/cyberweb/javascript_code/jquery/jquery-ui-1.12.1.js +18706 -0
  287. data/lib/cyberweb/javascript_code/rgb_to_hex.js +14 -0
  288. data/lib/cyberweb/javascript_code/select_even_numbers.js +7 -0
  289. data/lib/cyberweb/javascript_code/select_everything.js +22 -0
  290. data/lib/cyberweb/javascript_code/simple_calculator.js +15 -0
  291. data/lib/cyberweb/javascript_code/sleep.js +3 -0
  292. data/lib/cyberweb/javascript_code/to_celsius.js +8 -0
  293. data/lib/cyberweb/mouse/README.md +3 -0
  294. data/lib/cyberweb/mouse/libxdo.rb +321 -0
  295. data/lib/cyberweb/mouse/mouse.rb +264 -0
  296. data/lib/cyberweb/objectified_html_tags/README.md +8 -0
  297. data/lib/cyberweb/objectified_html_tags/a.rb +129 -0
  298. data/lib/cyberweb/objectified_html_tags/abbr.rb +84 -0
  299. data/lib/cyberweb/objectified_html_tags/base.rb +376 -0
  300. data/lib/cyberweb/objectified_html_tags/button.rb +135 -0
  301. data/lib/cyberweb/objectified_html_tags/combobox.rb +165 -0
  302. data/lib/cyberweb/objectified_html_tags/div.rb +129 -0
  303. data/lib/cyberweb/objectified_html_tags/embed.rb +161 -0
  304. data/lib/cyberweb/objectified_html_tags/form.rb +129 -0
  305. data/lib/cyberweb/objectified_html_tags/h1.rb +129 -0
  306. data/lib/cyberweb/objectified_html_tags/h2.rb +129 -0
  307. data/lib/cyberweb/objectified_html_tags/h3.rb +129 -0
  308. data/lib/cyberweb/objectified_html_tags/h4.rb +129 -0
  309. data/lib/cyberweb/objectified_html_tags/h5.rb +129 -0
  310. data/lib/cyberweb/objectified_html_tags/h6.rb +129 -0
  311. data/lib/cyberweb/objectified_html_tags/hbox.rb +71 -0
  312. data/lib/cyberweb/objectified_html_tags/img.rb +202 -0
  313. data/lib/cyberweb/objectified_html_tags/input.rb +185 -0
  314. data/lib/cyberweb/objectified_html_tags/p.rb +129 -0
  315. data/lib/cyberweb/objectified_html_tags/pre.rb +129 -0
  316. data/lib/cyberweb/objectified_html_tags/span.rb +92 -0
  317. data/lib/cyberweb/objectified_html_tags/table.rb +174 -0
  318. data/lib/cyberweb/objectified_html_tags/textarea.rb +173 -0
  319. data/lib/cyberweb/objectified_html_tags/title.rb +82 -0
  320. data/lib/cyberweb/objectified_html_tags/window.rb +79 -0
  321. data/lib/cyberweb/predefined_and_freeform_methods/README.md +1 -0
  322. data/lib/cyberweb/predefined_and_freeform_methods/frage.rb +45 -0
  323. data/lib/cyberweb/predefined_and_freeform_methods/freeform_methods.rb +93 -0
  324. data/lib/cyberweb/predefined_and_freeform_methods/hash_css_class_to_use.rb +55 -0
  325. data/lib/cyberweb/predefined_and_freeform_methods/hash_registered_extra_tags.rb +29 -0
  326. data/lib/cyberweb/predefined_and_freeform_methods/header.rb +81 -0
  327. data/lib/cyberweb/predefined_and_freeform_methods/predefined_methods.rb +413 -0
  328. data/lib/cyberweb/project/project.rb +85 -0
  329. data/lib/cyberweb/rack/README.md +1 -0
  330. data/lib/cyberweb/rack/request.rb +31 -0
  331. data/lib/cyberweb/requires/README.md +4 -0
  332. data/lib/cyberweb/requires/do_require_web_object_files.rb +9 -0
  333. data/lib/cyberweb/requires/remove_html.rb +9 -0
  334. data/lib/cyberweb/requires/require_cgi.rb +16 -0
  335. data/lib/cyberweb/requires/require_charts.rb +20 -0
  336. data/lib/cyberweb/requires/require_generators.rb +23 -0
  337. data/lib/cyberweb/requires/require_html_tags_files.rb +23 -0
  338. data/lib/cyberweb/requires/require_javascript_files.rb +23 -0
  339. data/lib/cyberweb/requires/require_kimurai.rb +13 -0
  340. data/lib/cyberweb/requires/require_objectified_html_tags_files.rb +23 -0
  341. data/lib/cyberweb/requires/require_sinatra.rb +7 -0
  342. data/lib/cyberweb/requires/require_the_constants.rb +26 -0
  343. data/lib/cyberweb/requires/require_the_cyberweb_project.rb +172 -0
  344. data/lib/cyberweb/requires/require_the_html_template.rb +7 -0
  345. data/lib/cyberweb/requires/require_the_toplevel_methods_files.rb +24 -0
  346. data/lib/cyberweb/requires/require_web_images.rb +7 -0
  347. data/lib/cyberweb/requires/require_web_object_files.rb +25 -0
  348. data/lib/cyberweb/requires/require_yaml.rb +11 -0
  349. data/lib/cyberweb/sinatra/README.md +11 -0
  350. data/lib/cyberweb/sinatra/base.rb +145 -0
  351. data/lib/cyberweb/sinatra/custom_extensions.rb +131 -0
  352. data/lib/cyberweb/standalone_classes/all_css_classes.rb +255 -0
  353. data/lib/cyberweb/standalone_classes/calculator.rb +127 -0
  354. data/lib/cyberweb/standalone_classes/correct_image_entries_in_html_file.rb +207 -0
  355. data/lib/cyberweb/standalone_classes/input_focus.rb +97 -0
  356. data/lib/cyberweb/standalone_classes/tag_prototype.rb +43 -0
  357. data/lib/cyberweb/standalone_classes/turn_html_into_cyberweb.rb +174 -0
  358. data/lib/cyberweb/svg/blue_rect.svg +12 -0
  359. data/lib/cyberweb/svg/butterfly.svg +15 -0
  360. data/lib/cyberweb/svg/chemical_molecule.svg +192 -0
  361. data/lib/cyberweb/svg/circles_on_background.svg +29 -0
  362. data/lib/cyberweb/svg/ellipse.svg +12 -0
  363. data/lib/cyberweb/svg/five_circles.svg +26 -0
  364. data/lib/cyberweb/svg/flag_germany.svg +10 -0
  365. data/lib/cyberweb/svg/gaussian_blur.svg +20 -0
  366. data/lib/cyberweb/svg/gradient_circle.svg +18 -0
  367. data/lib/cyberweb/svg/green_butterfly.svg +18 -0
  368. data/lib/cyberweb/svg/green_tilted_lines.svg +25 -0
  369. data/lib/cyberweb/svg/lion.svg +161 -0
  370. data/lib/cyberweb/svg/one_circle.svg +12 -0
  371. data/lib/cyberweb/svg/pie_chart.svg +130 -0
  372. data/lib/cyberweb/svg/svg.cgi +61 -0
  373. data/lib/cyberweb/svg/tetris.svg +487 -0
  374. data/lib/cyberweb/svg/three_circles.svg +18 -0
  375. data/lib/cyberweb/svg/tiger.svg +732 -0
  376. data/lib/cyberweb/svg/tilted_arcs.svg +74 -0
  377. data/lib/cyberweb/svg/transparent_rect.svg +12 -0
  378. data/lib/cyberweb/svg/yellow_fe_blending.svg +42 -0
  379. data/lib/cyberweb/toplevel_methods/a.rb +131 -0
  380. data/lib/cyberweb/toplevel_methods/anmerkung.rb +67 -0
  381. data/lib/cyberweb/toplevel_methods/audio.rb +59 -0
  382. data/lib/cyberweb/toplevel_methods/bold.rb +65 -0
  383. data/lib/cyberweb/toplevel_methods/cgi.rb +65 -0
  384. data/lib/cyberweb/toplevel_methods/charsets.rb +52 -0
  385. data/lib/cyberweb/toplevel_methods/clear.rb +30 -0
  386. data/lib/cyberweb/toplevel_methods/close.rb +62 -0
  387. data/lib/cyberweb/toplevel_methods/consider_serving_the_web_object.rb +41 -0
  388. data/lib/cyberweb/toplevel_methods/css.rb +732 -0
  389. data/lib/cyberweb/toplevel_methods/date.rb +71 -0
  390. data/lib/cyberweb/toplevel_methods/dictionary.rb +48 -0
  391. data/lib/cyberweb/toplevel_methods/disable.rb +49 -0
  392. data/lib/cyberweb/toplevel_methods/document.rb +56 -0
  393. data/lib/cyberweb/toplevel_methods/dot.rb +182 -0
  394. data/lib/cyberweb/toplevel_methods/download_webpage.rb +18 -0
  395. data/lib/cyberweb/toplevel_methods/edit_configuration_file.rb +26 -0
  396. data/lib/cyberweb/toplevel_methods/ee.rb +44 -0
  397. data/lib/cyberweb/toplevel_methods/env.rb +44 -0
  398. data/lib/cyberweb/toplevel_methods/escape_html.rb +54 -0
  399. data/lib/cyberweb/toplevel_methods/fields.rb +46 -0
  400. data/lib/cyberweb/toplevel_methods/filename.rb +33 -0
  401. data/lib/cyberweb/toplevel_methods/frames.rb +131 -0
  402. data/lib/cyberweb/toplevel_methods/glob.rb +30 -0
  403. data/lib/cyberweb/toplevel_methods/google.rb +35 -0
  404. data/lib/cyberweb/toplevel_methods/hardware_information.rb +90 -0
  405. data/lib/cyberweb/toplevel_methods/hfin.rb +56 -0
  406. data/lib/cyberweb/toplevel_methods/html_comment.rb +48 -0
  407. data/lib/cyberweb/toplevel_methods/html_mode.rb +39 -0
  408. data/lib/cyberweb/toplevel_methods/html_tables.rb +818 -0
  409. data/lib/cyberweb/toplevel_methods/input.rb +54 -0
  410. data/lib/cyberweb/toplevel_methods/jquery.rb +82 -0
  411. data/lib/cyberweb/toplevel_methods/last_modified.rb +39 -0
  412. data/lib/cyberweb/toplevel_methods/links.rb +426 -0
  413. data/lib/cyberweb/toplevel_methods/listing.rb +96 -0
  414. data/lib/cyberweb/toplevel_methods/localhost.rb +18 -0
  415. data/lib/cyberweb/toplevel_methods/log_directory.rb +84 -0
  416. data/lib/cyberweb/toplevel_methods/logging.rb +42 -0
  417. data/lib/cyberweb/toplevel_methods/logo.rb +30 -0
  418. data/lib/cyberweb/toplevel_methods/markdown.rb +112 -0
  419. data/lib/cyberweb/toplevel_methods/mathml.rb +130 -0
  420. data/lib/cyberweb/toplevel_methods/message_boxes.rb +140 -0
  421. data/lib/cyberweb/toplevel_methods/misc.rb +1398 -0
  422. data/lib/cyberweb/toplevel_methods/name_of_img_dir.rb +51 -0
  423. data/lib/cyberweb/toplevel_methods/padlem_and_marlem.rb +107 -0
  424. data/lib/cyberweb/toplevel_methods/params.rb +57 -0
  425. data/lib/cyberweb/toplevel_methods/path.rb +69 -0
  426. data/lib/cyberweb/toplevel_methods/pdf.rb +103 -0
  427. data/lib/cyberweb/toplevel_methods/process_content.rb +102 -0
  428. data/lib/cyberweb/toplevel_methods/progress.rb +42 -0
  429. data/lib/cyberweb/toplevel_methods/quote.rb +44 -0
  430. data/lib/cyberweb/toplevel_methods/random.rb +70 -0
  431. data/lib/cyberweb/toplevel_methods/rds.rb +35 -0
  432. data/lib/cyberweb/toplevel_methods/read_and_display.rb +284 -0
  433. data/lib/cyberweb/toplevel_methods/readlines.rb +31 -0
  434. data/lib/cyberweb/toplevel_methods/redirect.rb +29 -0
  435. data/lib/cyberweb/toplevel_methods/registered_ids.rb +178 -0
  436. data/lib/cyberweb/toplevel_methods/remove_html.rb +32 -0
  437. data/lib/cyberweb/toplevel_methods/remove_newlines.rb +28 -0
  438. data/lib/cyberweb/toplevel_methods/return_head_start.rb +33 -0
  439. data/lib/cyberweb/toplevel_methods/return_html_fin.rb +34 -0
  440. data/lib/cyberweb/toplevel_methods/return_html_header.rb +35 -0
  441. data/lib/cyberweb/toplevel_methods/return_html_start.rb +24 -0
  442. data/lib/cyberweb/toplevel_methods/return_html_to_head_start.rb +42 -0
  443. data/lib/cyberweb/toplevel_methods/return_meta_collection.rb +54 -0
  444. data/lib/cyberweb/toplevel_methods/return_pwd.rb +23 -0
  445. data/lib/cyberweb/toplevel_methods/return_strict_doctype.rb +51 -0
  446. data/lib/cyberweb/toplevel_methods/roebe.rb +43 -0
  447. data/lib/cyberweb/toplevel_methods/s2.rb +30 -0
  448. data/lib/cyberweb/toplevel_methods/sanitize_url.rb +57 -0
  449. data/lib/cyberweb/toplevel_methods/sbr.rb +170 -0
  450. data/lib/cyberweb/toplevel_methods/server_base_directory.rb +148 -0
  451. data/lib/cyberweb/toplevel_methods/show_and_display.rb +215 -0
  452. data/lib/cyberweb/toplevel_methods/show_configuration.rb +83 -0
  453. data/lib/cyberweb/toplevel_methods/sitemap.rb +111 -0
  454. data/lib/cyberweb/toplevel_methods/spacer.rb +119 -0
  455. data/lib/cyberweb/toplevel_methods/string_body_start.rb +65 -0
  456. data/lib/cyberweb/toplevel_methods/string_content.rb +35 -0
  457. data/lib/cyberweb/toplevel_methods/svg.rb +66 -0
  458. data/lib/cyberweb/toplevel_methods/tag.rb +237 -0
  459. data/lib/cyberweb/toplevel_methods/temp_directory.rb +73 -0
  460. data/lib/cyberweb/toplevel_methods/test_css.rb +24 -0
  461. data/lib/cyberweb/toplevel_methods/textile.rb +45 -0
  462. data/lib/cyberweb/toplevel_methods/title.rb +125 -0
  463. data/lib/cyberweb/toplevel_methods/umlaute.rb +90 -0
  464. data/lib/cyberweb/toplevel_methods/video.rb +352 -0
  465. data/lib/cyberweb/toplevel_methods/view_source.rb +50 -0
  466. data/lib/cyberweb/toplevel_methods/web_object.rb +42 -0
  467. data/lib/cyberweb/toplevel_methods/write_what_into.rb +27 -0
  468. data/lib/cyberweb/utility_scripts/README.md +4 -0
  469. data/lib/cyberweb/utility_scripts/create_coloured_tags.rb +172 -0
  470. data/lib/cyberweb/utility_scripts/download_balloon_css.rb +160 -0
  471. data/lib/cyberweb/utility_scripts/hyperlink_all_images_from.rb +148 -0
  472. data/lib/cyberweb/version/version.rb +25 -0
  473. data/lib/cyberweb/web_base/web_base.rb +28 -0
  474. data/lib/cyberweb/web_images/array_listing_all_project_images.rb +52 -0
  475. data/lib/cyberweb/web_images/map_symbol_to_image_location.rb +1661 -0
  476. data/lib/cyberweb/web_images/web_images.rb +270 -0
  477. data/lib/cyberweb/web_object/css.rb +627 -0
  478. data/lib/cyberweb/web_object/evaluate.rb +126 -0
  479. data/lib/cyberweb/web_object/favicon.rb +160 -0
  480. data/lib/cyberweb/web_object/html_related_tags.rb +320 -0
  481. data/lib/cyberweb/web_object/images.rb +693 -0
  482. data/lib/cyberweb/web_object/initialize.rb +51 -0
  483. data/lib/cyberweb/web_object/input_related_functionality.rb +414 -0
  484. data/lib/cyberweb/web_object/javascript.rb +427 -0
  485. data/lib/cyberweb/web_object/languages.rb +172 -0
  486. data/lib/cyberweb/web_object/links.rb +228 -0
  487. data/lib/cyberweb/web_object/misc.rb +5159 -0
  488. data/lib/cyberweb/web_object/params.rb +289 -0
  489. data/lib/cyberweb/web_object/reset.rb +192 -0
  490. data/lib/cyberweb/web_object/run.rb +44 -0
  491. data/lib/cyberweb/web_object/sinatra_related_functionality.rb +30 -0
  492. data/lib/cyberweb/web_object/sitemap.rb +176 -0
  493. data/lib/cyberweb/web_object/table.rb +378 -0
  494. data/lib/cyberweb/web_object/web_object.rb +126 -0
  495. data/lib/cyberweb/web_scraper/README.md +8 -0
  496. data/lib/cyberweb/web_scraper/scrape_this_url.rb +183 -0
  497. data/lib/cyberweb/webmin/biology_server.cgi +256 -0
  498. data/lib/cyberweb/webmin/calculator.cgi +52 -0
  499. data/lib/cyberweb/webmin/colour_chart.cgi +33 -0
  500. data/lib/cyberweb/webmin/comments.cgi +137 -0
  501. data/lib/cyberweb/webmin/comments_data +18 -0
  502. data/lib/cyberweb/webmin/constants.rb +46 -0
  503. data/lib/cyberweb/webmin/dictionary.cgi +39 -0
  504. data/lib/cyberweb/webmin/sys_info.cgi +26 -0
  505. data/lib/cyberweb/webmin/webforum.cgi +58 -0
  506. data/lib/cyberweb/webmin/webmin.cgi +679 -0
  507. data/lib/cyberweb/yaml/autogenerated_system_settings.yml +14 -0
  508. data/lib/cyberweb/yaml/custom_tags.yml +7 -0
  509. data/lib/cyberweb/yaml/debug.yml +1 -0
  510. data/lib/cyberweb/yaml/html5_global_attributes.yml +12 -0
  511. data/lib/cyberweb/yaml/html5_new_elements.yml +108 -0
  512. data/lib/cyberweb/yaml/html_tag_legend.yml +12 -0
  513. data/lib/cyberweb/yaml/http_status_codes.yml +38 -0
  514. data/lib/cyberweb/yaml/js_files_to_load.yml +28 -0
  515. data/lib/cyberweb/yaml/project_configuration.yml +229 -0
  516. data/lib/cyberweb/yaml/video_attributes.yml +35 -0
  517. data/lib/cyberweb/yaml/web_images.yml +306 -0
  518. data/lib/cyberweb.rb +5 -0
  519. data/test/README.md +5 -0
  520. data/test/complex_tests/all_tests_in_one_page.cgi +666 -0
  521. data/test/complex_tests/simple_sinatra_example_using_cyberweb/simple.rb +60 -0
  522. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.cgi +7 -0
  523. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.rb +23 -0
  524. data/test/complex_tests/sinatra_or_cyberweb/sinatra_or_cyberweb.sinatra +65 -0
  525. data/test/complex_tests/testing_frames.cgi +42 -0
  526. data/test/complex_tests/testing_objectified_html_tags.rb +82 -0
  527. data/test/complex_tests/testing_style_variants/README.md +2 -0
  528. data/test/complex_tests/testing_style_variants/show_coloured_boxes.cgi +58 -0
  529. data/test/complex_tests/testing_tables.cgi +67 -0
  530. data/test/complex_tests/testing_the_cyberweb_shell.rb +188 -0
  531. data/test/complex_tests/testing_web_object.rb +94 -0
  532. data/test/css/README.md +5 -0
  533. data/test/css/return_the_content_of_these_css_classes.rb +7 -0
  534. data/test/css/testing_css_effects.cgi +159 -0
  535. data/test/css/testing_css_masking.cgi +36 -0
  536. data/test/dummy.pdf +0 -0
  537. data/test/hello_world/hello_world.cgi +25 -0
  538. data/test/javascript/README.md +2 -0
  539. data/test/javascript/testing_cheerleader_javascript.cgi +0 -0
  540. data/test/javascript/testing_drag_and_drop_support.cgi +33 -0
  541. data/test/javascript/testing_on_click_change_opacity.cgi +26 -0
  542. data/test/javascript/testing_snowflakes.cgi +20 -0
  543. data/test/simple_tests/README.md +3 -0
  544. data/test/simple_tests/ad-hoc-test.cgi +55 -0
  545. data/test/simple_tests/commandline_tests.rb +70 -0
  546. data/test/simple_tests/display_this_file.cgi +11 -0
  547. data/test/simple_tests/simple_html_example.cgi +29 -0
  548. data/test/simple_tests/simple_status_page.cgi +52 -0
  549. data/test/simple_tests/string_s2_test.rb +11 -0
  550. data/test/simple_tests/test_simple_string_as_input.rb +12 -0
  551. data/test/simple_tests/testing_base64_images.cgi +26 -0
  552. data/test/simple_tests/testing_dragging_an_image.cgi +23 -0
  553. data/test/simple_tests/testing_editable_text.cgi +16 -0
  554. data/test/simple_tests/testing_email.cgi +31 -0
  555. data/test/simple_tests/testing_embedding_a_pdf_file.cgi +32 -0
  556. data/test/simple_tests/testing_google_charts.cgi +24 -0
  557. data/test/simple_tests/testing_html_forms.cgi +31 -0
  558. data/test/simple_tests/testing_html_template.rb +13 -0
  559. data/test/simple_tests/testing_popup_div.cgi +22 -0
  560. data/test/simple_tests/testing_return_dataset_without_any_comments.rb +11 -0
  561. data/test/simple_tests/testing_the_cap_box.cgi +20 -0
  562. data/test/simple_tests/testing_the_div_tag.cgi +21 -0
  563. data/test/simple_tests/testing_the_headers_tag.cgi +36 -0
  564. data/test/simple_tests/testing_the_html_colours.cgi +19 -0
  565. data/test/simple_tests/testing_the_info_box.cgi +19 -0
  566. data/test/simple_tests/testing_the_li_tag.cgi +24 -0
  567. data/test/simple_tests/testing_the_s2_method.rb +7 -0
  568. data/test/simple_tests/testing_the_select_tag.cgi +23 -0
  569. data/test/simple_tests/testing_the_span_tag.cgi +36 -0
  570. data/test/simple_tests/testing_web_images.rb +12 -0
  571. data/test/testing_html_tags/README.md +7 -0
  572. data/test/testing_html_tags/button_example.cgi +42 -0
  573. metadata +759 -0
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # This file will store image-related code of interest to the
6
+ # Cyberweb project.
7
+ # =========================================================================== #
8
+ # require 'cyberweb/images/images.rb'
9
+ # =========================================================================== #
10
+ module Cyberweb
11
+
12
+ require 'yaml'
13
+ require 'cyberweb/images/path_to_images.rb'
14
+ require 'cyberweb/images/embed_this_image.rb'
15
+ require 'cyberweb/images/is_image.rb'
16
+ require 'cyberweb/images/string_image.rb'
17
+ require 'cyberweb/images/standalone_drag_and_drop_this_image.rb'
18
+ require 'cyberweb/images/remove_this_substring_from_all_images.rb'
19
+
20
+ end
21
+
22
+ if __FILE__ == $PROGRAM_NAME
23
+ require 'colours/colours_e_autoinclude.rb'
24
+ n_tests_to_perform = '4'
25
+ e Colours.rev+
26
+ 'Now performing '+
27
+ Colours.lightgreen(n_tests_to_perform)+
28
+ ' short "tests":'
29
+ e Colours.slateblue(N+'(1)'+N)
30
+ e Cyberweb.string_image(
31
+ 'cat.png'
32
+ )
33
+ e Colours.slateblue(N+'(2)'+N)
34
+ e Cyberweb.string_image(
35
+ 'cat.png',
36
+ alt: 'Cat is shown here normally but first argument was a String'
37
+ )
38
+ e Colours.slateblue(N+'(3)'+N)
39
+ e Cyberweb.string_image(
40
+ 'smiley.gif', alt: 'Smiley face'
41
+ )
42
+ e Colours.slateblue(N+'(4)'+N)
43
+ e Cyberweb.string_image(
44
+ img: 'cat.png', alt: 'Cat is shown here normally'
45
+ )
46
+ e
47
+ e Cyberweb.string_img(
48
+ 'RPG/DSA/DSA_LOGO_BIG.png', id: 'drag_dsa_logo_big'
49
+ )
50
+ e
51
+ end
52
+
53
+ if __FILE__ == $PROGRAM_NAME
54
+ c = '<span style="margin-left:2em"><img src="/home/x/DATA/IMG/STUDIUM/TU_VIENNA_LOGO.png">
55
+ <span style="margin-left:2em"><img src="/home/x/DATA/IMG/STUDIUM/VETMED_LOGO_IMAGE.png">'
56
+ puts Cyberweb.remove_this_substring_from_all_images(:default, :default, c)
57
+ puts Cyberweb.is_image?('foobar.png')
58
+ end
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'cyberweb/images/is_image.rb'
6
+ # =========================================================================== #
7
+ module Cyberweb
8
+
9
+ require 'cyberweb/constants/array_images.rb'
10
+ # ========================================================================= #
11
+ # === Cyberweb.is_image?
12
+ #
13
+ # This method will return true if the input is an image, otherwise
14
+ # it will yield false.
15
+ # ========================================================================= #
16
+ def self.is_image?(this_file)
17
+ ARRAY_IMAGES.any? {|entry|
18
+ this_file.downcase =~ /\.#{entry}$/
19
+ }
20
+ end; self.instance_eval { alias is_this_an_image? is_image? } # === Cyberweb.is_this_an_image?
21
+
22
+ end
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'cyberweb/images/path_to_images.rb'
6
+ # =========================================================================== #
7
+ module Cyberweb
8
+
9
+ require 'cyberweb/constants/roebe.rb'
10
+
11
+ # ========================================================================= #
12
+ # === @path_to_images
13
+ #
14
+ # The @path_to_images variable is initially hardcoded.
15
+ #
16
+ # It will lateron become sanitized and dynamic.
17
+ # ========================================================================= #
18
+ @path_to_images = Cyberweb.roebe_image_dir?
19
+
20
+ # ========================================================================= #
21
+ # === Cyberweb.path_to_images?
22
+ #
23
+ # This method will always give us back the path to the images.
24
+ # ========================================================================= #
25
+ def self.path_to_images?
26
+ @path_to_images.to_s # .to_s to safeguard against any possible nil.
27
+ end; self.instance_eval { alias path_to_image_dir? path_to_images? } # === Cyberweb.path_to_image_dir?
28
+ self.instance_eval { alias path_to_img_dir? path_to_images? } # === Cyberweb.path_to_img_dir?
29
+
30
+ # ========================================================================= #
31
+ # === Cyberweb.set_path_to_images
32
+ #
33
+ # This method can be used to set a path to a global image-directory.
34
+ # ========================================================================= #
35
+ def self.set_path_to_images(
36
+ i = @path_to_images
37
+ )
38
+ case i
39
+ when :default # Set default before entering the case-menu.
40
+ i = @path_to_images
41
+ end
42
+ case i
43
+ when nil
44
+ i = path_to_images?
45
+ end
46
+ i = i.to_s.dup
47
+ unless i.end_with? '/'
48
+ i << '/' unless i.empty?
49
+ end
50
+ @path_to_images = i
51
+ end; self.instance_eval { alias set_image_base_directory set_path_to_images }
52
+
53
+ # ========================================================================= #
54
+ # === Cyberweb.use_absolute_image_path
55
+ # ========================================================================= #
56
+ def self.use_absolute_image_path
57
+ set_path_to_images('')
58
+ end
59
+
60
+ end
@@ -0,0 +1,6 @@
1
+ This directory used to contain the "real" images, aka .jpg
2
+ or .png files, for the Cyberweb component.
3
+
4
+ In September 2020 this had to be reverted, though, due to
5
+ some bugs. At a later time I may re-evaluate this, but for
6
+ now this file, as a notice, has to suffice.
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'cyberweb/images/remove_this_substring_from_all_images.rb'
6
+ # =========================================================================== #
7
+ module Cyberweb
8
+
9
+ require 'cyberweb/constants/roebe.rb'
10
+ # ========================================================================= #
11
+ # === Cyberweb.remove_this_substring_from_all_images
12
+ #
13
+ # The code in this method can be used to replace all paths of images
14
+ # in e. g. a HTML file (stored as String).
15
+ #
16
+ # The functionality was needed because I have had absolute paths to
17
+ # images, which needed to be turned into relative paths instead.
18
+ # ========================================================================= #
19
+ def self.remove_this_substring_from_all_images(
20
+ look_for_this_component = HOME_X_DATA,
21
+ replace_it_with_that_string = '../',
22
+ use_this_string = nil
23
+ )
24
+ if use_this_string
25
+ case look_for_this_component
26
+ # ===================================================================== #
27
+ # === :default
28
+ # ===================================================================== #
29
+ when :default
30
+ look_for_this_component = HOME_X_DATA
31
+ end
32
+ case replace_it_with_that_string
33
+ when :default
34
+ replace_it_with_that_string = '../'
35
+ end
36
+ use_this_string = use_this_string.dup if use_this_string.frozen?
37
+ use_this_string.gsub!(
38
+ /\<img src="#{look_for_this_component}/,
39
+ '<img src="'+replace_it_with_that_string
40
+ )
41
+ end
42
+ end
43
+
44
+ end
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'cyberweb/images/standalone_drag_and_drop_this_image.rb'
6
+ # =========================================================================== #
7
+ module Cyberweb
8
+
9
+ require 'cyberweb/javascript/drag_and_drop.rb'
10
+ # ========================================================================= #
11
+ # === Cyberweb.standalone_drag_and_drop_this_image
12
+ #
13
+ # This method has been added on 23.04.2019, mostly because I needed a
14
+ # simpler API to embed an image into a sinatra-application while also
15
+ # adding support for dragging this image with the mouse. The jquery
16
+ # library supports drag-and-drop operations performed on an image.
17
+ #
18
+ # The first argument to this method should be the URL to a remote image.
19
+ # However had, a local path could also be used, since we will only
20
+ # insert into the src="" attribute of the <img> tag anyway.
21
+ #
22
+ # Note that this will return a String - you have to handle the display
23
+ # of that String, should you want this, on your own.
24
+ #
25
+ # Usage example:
26
+ #
27
+ # Cyberweb.standalone_drag_and_drop_this_image('https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Devicon-ruby-plain-wordmark.svg/512px-Devicon-ruby-plain-wordmark.svg.png')
28
+ #
29
+ # ========================================================================= #
30
+ def self.standalone_drag_and_drop_this_image(
31
+ url_to_the_image, # <- The remote URL to the image that you wish to drag/drop-support.
32
+ optional_css_class = '',
33
+ optional_id = nil,
34
+ optional_css_style = ''
35
+ )
36
+ _ = ''.dup
37
+ # ======================================================================= #
38
+ # We currently rely on a hardcoded remote path to jquery - not very
39
+ # elegant, but it is simple and effective:
40
+ # ======================================================================= #
41
+ _ << '<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>'+"\n"
42
+ _ << '<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>'+"\n"
43
+ if optional_id.nil?
44
+ # ===================================================================== #
45
+ # In this case we will infer an id from the filename.
46
+ # ===================================================================== #
47
+ optional_id = File.basename(url_to_the_image)
48
+ end
49
+ optional_id = optional_id.
50
+ sub(/#{File.extname(url_to_the_image)}$/,'').to_s.
51
+ tr('-','_').gsub(/[0-9]/,'')
52
+ _ << '<img src="'+url_to_the_image.to_s+'"'
53
+ if optional_css_class and !optional_css_class.empty?
54
+ _ << ' class="'+optional_css_class+'"'
55
+ end
56
+ if optional_css_style and !optional_css_style.empty?
57
+ _ << " style=\"#{optional_css_style}\""
58
+ end
59
+ _ << ' id="'+optional_id+'">'+"\n"
60
+ _ << return_javascript_drag_and_drop(optional_id)+"\n"
61
+ _ # Return it finally.
62
+ end; self.instance_eval { alias drag_this_image_id standalone_drag_and_drop_this_image } # === Cyberweb.drag_this_image_id
63
+
64
+ end
@@ -0,0 +1,399 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'cyberweb/images/path_to_images.rb'
6
+ # Cyberweb.string_image
7
+ # =========================================================================== #
8
+ module Cyberweb
9
+
10
+ require 'cyberweb/requires/require_web_images.rb'
11
+ require 'cyberweb/constants/file_constants.rb'
12
+ require 'cyberweb/toplevel_methods/filename.rb' # ← Necessary for the method Cyberweb.register_this_filename()
13
+ require 'cyberweb/toplevel_methods/css.rb'
14
+ require 'cyberweb/toplevel_methods/registered_ids.rb'
15
+
16
+ # ========================================================================= #
17
+ # === string_img (sg tag)
18
+ #
19
+ # This method is just a wrapper over the module-level method called
20
+ # Cyberweb.string_img(). Please refer to that method, in this file
21
+ # here, for more information.
22
+ # ========================================================================= #
23
+ def string_img(
24
+ url = '', # entry 1
25
+ css_class = '', # entry 2
26
+ the_id = '', # entry 3
27
+ css_style = '', # entry 4
28
+ new_line = 0, # entry 5
29
+ alt = '', # entry 6
30
+ to_img_dir = 'def', # entry 7
31
+ usemap = '', # entry 8
32
+ javascript = '', # entry 9
33
+ &block
34
+ )
35
+ ::Cyberweb.string_image(
36
+ url,
37
+ css_class,
38
+ the_id,
39
+ css_style,
40
+ new_line,
41
+ alt,
42
+ to_img_dir,
43
+ usemap,
44
+ javascript,
45
+ &block
46
+ )
47
+ end; alias sg string_img # === sg # the main thing to use since 2011.
48
+ alias string_image string_img # === string_image
49
+ alias simg string_img # === simg
50
+ alias s_img string_img # === s_img
51
+ alias s_image string_img # === s_image
52
+
53
+ # ========================================================================= #
54
+ # === Cyberweb.string_image
55
+ #
56
+ # This method will try to "create" a HTML <img> tag. It will hold a
57
+ # reference to the image at hand, as a String. This String can then
58
+ # be used to be put to use for a web-page or some other web-app
59
+ # related program.
60
+ #
61
+ # This method here must remain as flexible as possible.
62
+ #
63
+ # If an alt-value is passed, and this value is the Symbol called :def,
64
+ # then the string 'Missing_Image' will be used.
65
+ #
66
+ # If you pass a Hash and wish to denote the image file at hand,
67
+ # use either of the two symbols :img or :src as the key.
68
+ #
69
+ # The first entry in the given Array may also be a Symbol, in which
70
+ # case we may attempt to query the WebImages project for a
71
+ # corresponding image file.
72
+ #
73
+ # The third argument, if supplied, will be used for the ID of
74
+ # that particular HTML element. If this value for the ID is
75
+ # :drag then we enable drag and drop support for this image.
76
+ # This part depends on the availability of jquery. If this value
77
+ # is the Symbol :drag_and_highlight then we will enable both drag
78
+ # and drop, and also jquery-based highlighting (an on-click
79
+ # action).
80
+ #
81
+ # The fifth argument to this method is usually reserved for
82
+ # a Symbol called :newline or :new_line. If this is the case, or
83
+ # if the given input evaluates to true, or the .to_s call to it
84
+ # is equal to the string '1' then a newline will be appended.
85
+ # The reaso as to why '1' or 1 also works as input is so that
86
+ # we can write terse code - but I recommend to be explicit
87
+ # and just use :newline or something like that instead.
88
+ #
89
+ # The following lines gather some existing examples - the method must
90
+ # be able to deal with all of these properly:
91
+ #
92
+ # sg('PC/HARDWARE/LAPTOP_LENOVO_110_17IKB.png','mar0_5em', :drag)
93
+ #
94
+ # The old code had hardcoded positions like these:
95
+ #
96
+ # url # 0
97
+ # css_class # 1
98
+ # the_id # 2
99
+ # css_style # 3
100
+ # new_line # 4
101
+ # alt # 5
102
+ # to_img_dir # 6
103
+ # usemap # 7
104
+ # javascript # 8
105
+ #
106
+ # This is still supported, in principle - but using a Hash may be a lot
107
+ # better if you have to pass in a lot of arguments.
108
+ #
109
+ # Some specific examples follow next:
110
+ #
111
+ # Cyberweb.string_img 'LG_GSA_4163.png' # => <img src="/home/x/data/images/LG_GSA_4163.png">
112
+ # Cyberweb.string_img(:external) # => <img src="/home/x/data/images/STD/EXTERNAL_LINK.png">
113
+ # Cyberweb.string_img 'diamond_logo' # => <img src="/home/x/data/images/diamond_logo">
114
+ # Cyberweb.string_img(:external,'', :drag_and_highlight) # => <img src="/Users/x/DATA/IMG/STD/EXTERNAL_LINK.png" <script> etc.
115
+ # Cyberweb.string_img :external # => <img src="/home/x/data/images/STD/EXTERNAL_LINK.png">
116
+ # Cyberweb.string_img url
117
+ # Cyberweb.string_img 'LG_GSA_4163.png','style','id',0,'altern name',Cyberweb::TID[0]
118
+ # Cyberweb.string_img '','class','style','id',0,'alt_name','def',nil,'onClick'
119
+ # Cyberweb.string_img(
120
+ # 'PC/HARDWARE/VOICE_RECORDER_OLYMPUS_360.png',
121
+ # id: 'drag_olympus',
122
+ # css: 'mars1em')
123
+ # Cyberweb.string_img('RPG/DSA/DSA_LOGO_BIG.png', id: 'drag_dsa_logo_big')
124
+ # Cyberweb.string_img('SITEMAP/SITEMAP_REAL.png', id: 'draggable_sitemap', css_style: 'z-index: -2;') # => <img src="/home/x/data/images/SITEMAP/SITEMAP_REAL.png" id="draggable_sitemap" style="z-index: -2;">
125
+ # Cyberweb.string_img('HARDWARE/ANSCHLÜSSE/HDMI_KABEL_ANSCHLUSS.jpg','bblack1 marl2em',
126
+ # :guess_draggable_id)
127
+ # rose = Cyberweb.sg('web_object/lib/web_object/images/real/ROSE.png.png', 'mar20px FLR', 'drag_rose', 'margin-right: 40%' ) { :do_not_prepend_anything }
128
+ #
129
+ # ========================================================================= #
130
+ def self.string_image(
131
+ *i,
132
+ &block
133
+ )
134
+ # ======================================================================= #
135
+ # === url
136
+ #
137
+ # The url variable will store the "URL" of the image at hand. It is
138
+ # in some ways the most important variable, because it will be used
139
+ # as the input to <img src="">.
140
+ # ======================================================================= #
141
+ url = ''.dup
142
+ first_entry = i.first # This can be a Hash or a String. Is equivalent to i[0].
143
+ # ======================================================================= #
144
+ # Check whether the image is registered as part of WebImages.
145
+ # ======================================================================= #
146
+ if webimages_is_included?(first_entry) and !File.exist?(first_entry.to_s)
147
+ first_entry = get_webimage(first_entry) # bl $CYBERWEB/get_webimage/webimages.rb
148
+ end
149
+ # ======================================================================= #
150
+ # Next, handle the second entry given. This can be a Hash, but it may
151
+ # also be a String. If it is a String then we assume it to mean a CSS
152
+ # class.
153
+ # ======================================================================= #
154
+ second_entry = i[1] # ← Remember: this can also be a Hash. This is the css-class.
155
+ third_entry = i[2] # ← This may be missing. If not missing then it is the id. Can also be a symbol like :drag
156
+ fourth_entry = i[3] # ← This is the css style.
157
+ fifth_entry = i[4] # ← This is for making a newline.
158
+ sixth_entry = i[5] # ← This is for the alt tag.
159
+ _seventh_entry = i[6] # ← This is for to_img_dir
160
+ # _eight_entry = i[7]
161
+ javascript = i[8].to_s.dup # ← This is for javascript
162
+ result = '<img src="'.dup
163
+ use_in_dir_images = use_in_dir_images?
164
+ # ======================================================================= #
165
+ # === Handle blocks next
166
+ # ======================================================================= #
167
+ if block_given?
168
+ yielded = yield
169
+ case yielded
170
+ # ===================================================================== #
171
+ # This entry point essentially means that we will not prepend any
172
+ # special string in order to find the corresponding web-image at
173
+ # hand.
174
+ # ===================================================================== #
175
+ when :use_absolute_path,
176
+ :absolute_path,
177
+ :do_not_prepend_anything
178
+ use_in_dir_images = true
179
+ end
180
+ end
181
+ if use_in_dir_images == false
182
+ # ===================================================================== #
183
+ # If we do not use in-dir images then we will prepend the
184
+ # relative path to the IMG directory - unless the File
185
+ # exists.
186
+ # ===================================================================== #
187
+ result << path_to_images?.to_s
188
+ end
189
+ # ======================================================================= #
190
+ # === Handle the cases where the second_entry is a Hash
191
+ # ======================================================================= #
192
+ if second_entry.is_a? Hash
193
+ if second_entry.has_key? :css_style
194
+ fourth_entry = second_entry.delete(:css_style)
195
+ end
196
+ end
197
+ if first_entry.is_a?(String) and second_entry.is_a? Hash
198
+ # ===================================================================== #
199
+ # We convert the first_entry into a Hash as well, if it was a String
200
+ # and the second entry was a Hash too. This allows us to easily
201
+ # merge the two together lateron.
202
+ # ===================================================================== #
203
+ first_entry = { src: first_entry } # ← Now first_entry will be a Hash as well.
204
+ end
205
+ if first_entry.is_a? Hash
206
+ if second_entry.is_a? Hash
207
+ # =================================================================== #
208
+ # Merge the two together next:
209
+ # =================================================================== #
210
+ first_entry.merge!(second_entry)
211
+ second_entry = nil
212
+ end
213
+ # ===================================================================== #
214
+ # Handle Hashes next, always starting with an :img key. Both :img
215
+ # and :src are equivalent.
216
+ # ===================================================================== #
217
+ if first_entry.has_key? :src
218
+ url = first_entry.delete(:src)
219
+ # ===================================================================== #
220
+ # === :img
221
+ # ===================================================================== #
222
+ elsif first_entry.has_key? :img
223
+ url = first_entry.delete(:img)
224
+ end
225
+ # ===================================================================== #
226
+ # === :css_class
227
+ # ===================================================================== #
228
+ if first_entry.has_key? :css_class
229
+ second_entry = first_entry.delete(:css_class)
230
+ end
231
+ else # else simply use the first_entry as URL. But ideally we would
232
+ # use a :src or :img identifier here.
233
+ url = first_entry
234
+ end
235
+ if url.is_a? String
236
+ url = rds(url) if url.include?('//')
237
+ end
238
+ result << url # Append the URL.
239
+ result << '"'
240
+ # ======================================================================= #
241
+ # === Handle the case where first_entry is a Hash and has an entry
242
+ # called :alt.
243
+ # ======================================================================= #
244
+ if first_entry.is_a?(Hash) and first_entry.has_key?(:alt)
245
+ value_for_alt = first_entry.delete(:alt)
246
+ value_for_alt = 'Missing_Image' if value_for_alt == :def
247
+ result << ' alt="'+value_for_alt+'"'
248
+ end
249
+ if first_entry.is_a?(Hash)
250
+ if first_entry.has_key?(:newline) or
251
+ first_entry.has_key?(:new_line)
252
+ result << N
253
+ end
254
+ # ===================================================================== #
255
+ # Re-assign the id entry to the third_entry variable:
256
+ # ===================================================================== #
257
+ if first_entry.has_key? :id
258
+ third_entry = first_entry.delete(:id)
259
+ end
260
+ end
261
+ # ======================================================================= #
262
+ # If the third entry exists and is not empty, we assume it to be a
263
+ # CSS class. The variable used to be called css_class.
264
+ # ======================================================================= #
265
+ if second_entry and second_entry.is_a?(String) and !second_entry.empty?
266
+ result << return_css_class(second_entry)
267
+ end
268
+ # ======================================================================= #
269
+ # === The ID of the image object
270
+ #
271
+ # Handle IDs passed into this method next. This has to support quite
272
+ # a few different symbols, such as :guess_draggable_id and other
273
+ # variants.
274
+ # ======================================================================= #
275
+ if third_entry
276
+ # ===================================================================== #
277
+ # If the user enabled global drag-support for all images, then this
278
+ # setting will be checked in the following subsection. If true, the
279
+ # string 'drag_' will be prepended to the id of our image in question.
280
+ # ===================================================================== #
281
+ if respond_to?(:web_object?) and web_object?
282
+ if web_object?.drag_all_images?
283
+ # ================================================================= #
284
+ # We need to be careful - if the id is empty, then we must come up
285
+ # with an ID name on our own. Otherwise, we can indeed just prepend.
286
+ # ================================================================= #
287
+ if third_entry.empty? # Invent a new id.
288
+ third_entry = 'drag_'+File.basename(url).tr(' .,','_')
289
+ else # else the existing ID will be used, and the String prepended to it.
290
+ case third_entry
291
+ # =============================================================== #
292
+ # === :guess_draggable_id
293
+ # =============================================================== #
294
+ when :guess_draggable_id
295
+ third_entry = 'drag_'+File.basename(url).gsub(File.extname(url),'')
296
+ end
297
+ third_entry = third_entry.to_s
298
+ third_entry = third_entry.dup if third_entry.frozen?
299
+ third_entry.prepend('drag_') unless third_entry.to_s.start_with? 'drag_'
300
+ end
301
+ end
302
+ end
303
+ if third_entry.is_a?(String) and !third_entry.empty?
304
+ result << return_the_id(third_entry)
305
+ # ===================================================================== #
306
+ # === Handle Symbols next
307
+ # ===================================================================== #
308
+ elsif third_entry.is_a? Symbol
309
+ # =================================================================== #
310
+ # === third_entry (which is the ID)
311
+ #
312
+ # Handle the case when we passed :drag or similar symbols to the ID
313
+ # that is to be used.
314
+ #
315
+ # This has to occur after we handled Hashes given as input.
316
+ # =================================================================== #
317
+ case third_entry # ← This is the ID
318
+ # =================================================================== #
319
+ # === :drag_and_highlight
320
+ # =================================================================== #
321
+ when :drag_and_highlight # Handle more complex Symbols here.
322
+ third_entry = 'drag_'+File.basename(url).gsub(File.extname(url),'')
323
+ # ================================================================= #
324
+ # In this case, we also highlight that particular entry.
325
+ # ================================================================= #
326
+ result << string_highlight(third_entry)
327
+ # =================================================================== #
328
+ # === :on_click_darken,
329
+ # =================================================================== #
330
+ when :on_click_darken,
331
+ :darken_on_click, # Handle on-click events for darkening an image.
332
+ :on_click_highlight
333
+ unless the_id.to_s.empty?
334
+ javascript = javascript.dup if javascript.frozen?
335
+ javascript << on_click_change_opacity(the_id).to_s
336
+ end
337
+ # =================================================================== #
338
+ # === :guess_draggable_id
339
+ # =================================================================== #
340
+ when :guess_draggable_id,
341
+ :drag,
342
+ /^drag/
343
+ third_entry = 'drag_'+File.basename(url).gsub(File.extname(url),'')
344
+ # ================================================================= #
345
+ # javascript_drag_and_drop(the_id)
346
+ # ^^^ We do not need to do the above because as we already
347
+ # prepend drag_ to it, it will be automatically activated
348
+ # in the file id.rb lateron.
349
+ # ================================================================= #
350
+ # =================================================================== #
351
+ # === :guess_id
352
+ #
353
+ # This will simply "guess" the ID to use.
354
+ # =================================================================== #
355
+ when :guess_id
356
+ third_entry = File.basename(url).gsub(File.extname(url),'')
357
+ end
358
+ result << return_the_id(third_entry)
359
+ end
360
+ end
361
+ # ======================================================================= #
362
+ # Next, handle css-style. We have to use .to_s here because a number
363
+ # such as 0 may also be passed into this method, even though this
364
+ # seems to be fairly useless.
365
+ # ======================================================================= #
366
+ if fourth_entry and !fourth_entry.to_s.empty?
367
+ result << return_css_style(fourth_entry.to_s)
368
+ end
369
+ # ======================================================================= #
370
+ # Next, handle the optional alt-tag:
371
+ # ======================================================================= #
372
+ if sixth_entry and !sixth_entry.empty?
373
+ result << " alt=\"#{sixth_entry}\""
374
+ end
375
+ if fifth_entry
376
+ case fifth_entry.to_s
377
+ when '1'
378
+ result << N
379
+ end
380
+ end
381
+ # ======================================================================= #
382
+ # Register the filename that is passed to us.
383
+ # ======================================================================= #
384
+ register_this_filename(url)
385
+ if javascript and !javascript.empty?
386
+ result << " #{javascript}"
387
+ result.squeeze!(' ')
388
+ end
389
+ # ======================================================================= #
390
+ # Append closing tag.
391
+ # ======================================================================= #
392
+ result << '>' unless result.end_with? '>'
393
+ result << N
394
+ return result # Finally, return our finding.
395
+ end; self.instance_eval { alias string_img string_image } # === Cyberweb.string_img
396
+ self.instance_eval { alias sg string_image } # === Cyberweb.sg
397
+ self.instance_eval { alias simg string_image } # === Cyberweb.simg
398
+
399
+ end
@@ -0,0 +1 @@
1
+ iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhEH5lAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAKjUExURQAAAEQ1MjYfHi0RETIeHG8EChsbEj0jJEYxMDseHjcAAS0AAz8eIAAAAEA1MAAIAMwgMjsuLCUAADklJ04XGYASG7oIFdkfKzQfHd0dLdFxetUwPPXP0u/IxT4EBfLCwtA1Q+CsrNyVl9empea8tdeAg9hcX+yLiiMTD+e+utNtcMUhJOWyuOKgq8YSIIFsb7tFUW1jYYFgZ593fIRVWrtWW8pCSKt4fMZKUHw+Q08JDbNxd38OErVjadFbXbIIEtgNJrh3d9wBEHoiJn41OOmqs8sUJLlOUGUNDd59h8oZJNqUl5ZcXYZISjQcGvQXKPjO2GkaI1xYVDc0L2FHSUxFQh4OCTQYFq4QGdcdLfSyu8iKjjEREKsnLB0CAdxbXmMODPfZ4KgSHKwGC9USJEExLngACeCurjgdHAAAAAcQCqcAACMAACgGBqQMDSwJCbkTGc4AABIAAMOIgMoECfLO1eqao70iJeCqprgCCrYYGvHT1erJyNphaa0AAMtyZrYWFcsaIeKcmu3Ny+i8uMs8OOOQkscABemcmu3EwqsAAN1cZMsgMey4uOqprOaUmKMAAP///+SqqtgjOaQAAMVTU98eMt4fMq8AAN4cMd0dMcAEENkjOdgkOkAAAOOqqr4PFyIAAOi4uMITHcQVIMMTHcUVIsUVIGQAAccRIsQVIssSI+MbGdshMb4PGWEVGcYNIMkRIL0MFAAAALgJELIKFc5JTdkkOt4AANwAAOIFAHIYHZoAAF8AAN0dMLsKEr0OFskRHjoAAMwcHMgAAKUAAE4AAOGlperExMlcXM4cHNEuLtAuLujDwsZcW9+lpFIAAKkeHeKqqqUHBebCwqkZFurDwuicoLEnJbEsKakOC+mboOihpb8ABOeeodAAAMsAAEUP3qsAAACQdFJOUwAVDT5I85MDBBbNifD2P9X9g/7H/e7+/if+5fsCDMY4+laZt3TX68F8JPb7BSD2B6EcIQZYzv4X9J3cQd6H/vf+PPb+8Qb+mtpW3Bd9x1b+E6ZQpVyeupf7/oBT1Njm7O0D+P79398V+vng+Pr3/P7+/v6U/jrD+zj+8wx26/7P/ftuJbXxr/3jVf75/p3i588o6TsAAAFhSURBVBjTAVYBqf4AAGF7g4mNjtze19uPhoJ4ZywAABxQdXyEiIuM3eDfh4V/c1stRQAdH1p2fYGK2tjZ1dOAel0wSUsAKSQnX3d+kNaRkdTReWQuSkdBACEjJitjkJTSkZGSkJCwQEJITAAiGhsWtZSQkpGRkpSUqb5Pnk0AJSAZq66QkJKRkZKQkKatl71EACoXnJOykJCSkZGSkJCkl5a8QwA+rJOTtJCUkpGRkpCUo5eXm7sAtrqdk7+QkJ+RkZ+QkKWWlpuvADa5nZPAkJCikZGikJCnlpaoFAA4uLeToJCQlZWVlZCQqpqaEgwANbOTnKCQkMmVlc6QkLGZmQ0TAD06P1nBlJDHkZHPkJBGEAUPEQA7OTxicMWYyJGRzZiYWBUKBg4ANzRRZmtxxMrLzMN0bmAeCwQBADMyVFNqaXKe0MbCbF5WKAMJCAAALzFSVWVob6GhbVxXThgCBwAArpmbdTKhrAAAAABJRU5ErkJggg==
@@ -0,0 +1 @@
1
+ iVBORw0KGgoAAAANSUhEUgAAACcAAAATBAMAAADhZgm9AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAtUExURQAAACSRtgBtkdr//2222ki22pHa2tra/7ba2ki2trba/5G22iS2tiSRkUiRtpYvcdEAAAABdFJOUwBA5thmAAAAkUlEQVQY02NgwA6YU4UxxNgD3Q0wBBuDMTWzH8ViIosAFkFDB6IELRYw2KAJsqeKAM2cjCLWIqQUwMDAJY0kZOaopKQJcrVjAlyMVQkIwN4zEYMLcispXlIsADMTw+GigXFK4tAAcYyAGekqpNQACyZH0XRmA4MKV0E3ITWErWUTBYHArYBZCNXVxsxgZzLgBAAJFhSziyUU/gAAAABJRU5ErkJggg==