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,732 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'cyberweb/toplevel_methods/css.rb'
6
+ # Cyberweb.css_comment
7
+ # =========================================================================== #
8
+ module Cyberweb
9
+
10
+ require 'cyberweb/toplevel_methods/html_mode.rb'
11
+ require 'cyberweb/project/project.rb'
12
+ require 'cyberweb/constants/standalone_constants.rb'
13
+ require 'cyberweb/constants/project_constants.rb'
14
+ require 'cyberweb/colours/sanitize_for_colours.rb'
15
+ require 'cyberweb/encoding/encoding.rb'
16
+
17
+ # ========================================================================= #
18
+ # === Cyberweb.return_content_of_all_the_CSS_files
19
+ #
20
+ # This method will return, as a String, the content of all .css files
21
+ # distributed within the Cyberweb project. (Or, more accurately, those
22
+ # that are registered to be distributed.)
23
+ # ========================================================================= #
24
+ def self.return_content_of_all_the_CSS_files
25
+ _ = ''.dup
26
+ Cyberweb::ARRAY_LOCAL_CSS_FILES.each {|this_css_file|
27
+ target_file = DIRECTORY_WITH_CSS_FILES+this_css_file+'.css'
28
+ if File.exist? target_file
29
+ _ << File.read(target_file)
30
+ _ << "\n"
31
+ end
32
+ }
33
+ return _
34
+ end
35
+
36
+ # ========================================================================= #
37
+ # === Cyberweb.return_the_content_of_these_css_classes
38
+ #
39
+ # This method will take CSS classes, find the corresponding rule for
40
+ # them and then return this rule as a String.
41
+ # ========================================================================= #
42
+ def self.return_the_content_of_these_css_classes(
43
+ these_css_classes = 'BG_BLACK pad0_4em'
44
+ )
45
+ original_input = ''.dup
46
+ Dir[
47
+ DIRECTORY_WITH_CSS_FILES+'*.css'
48
+ ].each {|this_css_file|
49
+ original_input << File.read(this_css_file)
50
+ original_input << "\n"
51
+ }
52
+ _ = ''.dup
53
+ these_css_classes = [these_css_classes].flatten.compact.map {|entry|
54
+ if entry.include? ' '
55
+ entry = entry.split(' ')
56
+ end
57
+ entry
58
+ }
59
+ these_css_classes.flatten!
60
+ these_css_classes.each {|this_css_class|
61
+ use_this_regex = /^(\.#{this_css_class}.+)$/
62
+ original_input =~ use_this_regex
63
+ _ << $1.to_s.dup+"\n"
64
+ }
65
+ return _
66
+ end; self.instance_eval { alias embed_these_css_classes return_the_content_of_these_css_classes } # === Cyberweb.embed_these_css_classes
67
+
68
+ # ========================================================================= #
69
+ # === Cyberweb.return_this_css_style (style tag)
70
+ #
71
+ # This method returns a proper CSS <style> tag, that is one that
72
+ # starts with <style> and ends with </style>.
73
+ #
74
+ # RANDOM_COLOUR is a special "macro" but you may also use RAND or
75
+ # similar "macros" to get a random colour. Getting a random colour
76
+ # may be useful in the event that you do not want to come up with
77
+ # a colour scheme on your own.
78
+ #
79
+ # Personally I use this when I do not want to lookup a colour name.
80
+ #
81
+ # Example of what this method may return:
82
+ #
83
+ # "<style>color: green</style>"
84
+ #
85
+ # ========================================================================= #
86
+ def self.return_this_css_style(
87
+ i = '', # This is css_style.
88
+ use_newlines = true
89
+ )
90
+ case use_newlines
91
+ when :do_not_use_newlines,
92
+ :remove_newlines
93
+ use_newlines = false
94
+ end
95
+ _ = ''.dup # This will be the return result.
96
+ i = i.join(N) if i.is_a? Array # Need to convert Arrays.
97
+ if i.is_a? Hash
98
+ if i.has_key? :style
99
+ i = i.delete(:style)
100
+ end
101
+ end
102
+ i = i.to_s
103
+ unless i.empty?
104
+ if i.include? 'FS'
105
+ i.gsub!(/FS(.+)em/, 'font-size:\\1em')
106
+ end
107
+ # ===================================================================== #
108
+ # How to use the following? Simple. Simply add in your css stuff
109
+ # a line like this:
110
+ # body { RANDOM_BACKGROUND_IMAGE }
111
+ # ===================================================================== #
112
+ if i.include? 'RANDOM_BACKGROUND_IMAGE'
113
+ i.gsub!(/RANDOM_BACKGROUND_IMAGE/,
114
+ 'background-image: url("'+@fixed_path+'images/'+return_random_image+'");
115
+ background-repeat: no-repeat;')
116
+ end
117
+ # ===================================================================== #
118
+ # === Add the <style> opening tag next
119
+ #
120
+ # Next, add <style> tag, or <style type="text/css">
121
+ # ===================================================================== #
122
+ if ::Cyberweb.is_html5?
123
+ _ << '<style>'
124
+ else
125
+ _ << '<style type="text/css">'
126
+ end
127
+ _ << NL if use_newlines
128
+ # ===================================================================== #
129
+ # i = remove_newlines(i)
130
+ # ^^^ We can not remove newlines, as the css style may have
131
+ # more than one line.
132
+ # ===================================================================== #
133
+ # ===================================================================== #
134
+ # === Handle border-double pseudo-CSS element
135
+ #
136
+ # The next construct is a pseudo-CSS element. border double means
137
+ # top and bottom border on an element.
138
+ # ===================================================================== #
139
+ if i.include? 'border-double:'
140
+ i.gsub!(/border-double:(.+);/,'border-top: \\1; border-bottom: \\1;')
141
+ end
142
+ # ===================================================================== #
143
+ # === Handle colour-input next
144
+ # ===================================================================== #
145
+ i = ::Cyberweb.sanitize_for_colours(i) # Since as of Jul 2011. bl $CYBERWEB/colours/sanitize_for_colours.rb
146
+ # ===================================================================== #
147
+ # RANDOM_BORDER
148
+ # ===================================================================== #
149
+ if i.include? 'RANDOM_BORDER'
150
+ regex = /RANDOM_BORDER_(.+)/
151
+ match = i.match(regex)[1]
152
+ i.gsub!(regex, ::Cyberweb.return_random_border(match))
153
+ end
154
+ _ << i
155
+ _ << NL if use_newlines
156
+ _ << '</style>'
157
+ _ << NL if use_newlines
158
+ end
159
+ return _
160
+ end; self.instance_eval { alias style_tag return_this_css_style } # === Cyberweb.style_tag
161
+ self.instance_eval { alias css_style return_this_css_style } # === Cyberweb.css_style
162
+
163
+ # ========================================================================= #
164
+ # === listing_css=
165
+ #
166
+ # Use this method to modify the "global" variable @listing_css_object.
167
+ #
168
+ # You can also use the method listing_css instead.
169
+ #
170
+ # Usage example:
171
+ #
172
+ # Cyberweb.listing_css = '<b class="red">'
173
+ #
174
+ # ========================================================================= #
175
+ def listing_css=(i)
176
+ ::Cyberweb.listing_css_object = i
177
+ end; alias listing_css listing_css= # === listing_css
178
+
179
+ # ========================================================================= #
180
+ # === Cyberweb.css_comment
181
+ #
182
+ # This method will simply make a CSS comment.
183
+ # ========================================================================= #
184
+ def self.css_comment(i)
185
+ return "/* #{i} */#{NL}"
186
+ end
187
+
188
+ # ========================================================================= #
189
+ # === TEMPLATES
190
+ #
191
+ # Next we load up some css templates.
192
+ # ========================================================================= #
193
+
194
+ # ========================================================================= #
195
+ # === Cyberweb::TEMPLATE1
196
+ # ========================================================================= #
197
+ if File.exist? PROJECT_BASE_DIR+CSS_FILES.first
198
+ TEMPLATE1 = File.readlines(
199
+ PROJECT_BASE_DIR+CSS_FILES.first,
200
+ encoding: ::Cyberweb.main_encoding?
201
+ ).join('') # <- This is cascading_style_sheets/default.css
202
+ else
203
+ TEMPLATE1 = ''
204
+ end
205
+
206
+ # ========================================================================= #
207
+ # === TEMPLATE2
208
+ # ========================================================================= #
209
+ if File.exist? DIRECTORY_WITH_CSS_FILES+'template2.css'
210
+ TEMPLATE2 = File.readlines(
211
+ DIRECTORY_WITH_CSS_FILES+'template2.css',
212
+ encoding: ::Cyberweb.main_encoding?
213
+ ).join('')
214
+ else
215
+ TEMPLATE2 = ''
216
+ end
217
+
218
+ # ========================================================================= #
219
+ # === CODE_TEMPLATE
220
+ # ========================================================================= #
221
+ if File.exist? DIRECTORY_WITH_CSS_FILES+'code.css'
222
+ CODE_TEMPLATE = File.readlines(
223
+ DIRECTORY_WITH_CSS_FILES+'code.css',
224
+ encoding: ::Cyberweb.main_encoding?
225
+ ).join('')
226
+ else
227
+ CODE_TEMPLATE = ''
228
+ end
229
+
230
+ # ========================================================================= #
231
+ # === TEMPLATE_RUBY_REGEX
232
+ # ========================================================================= #
233
+ if File.exist? DIRECTORY_WITH_CSS_FILES+'ruby_regexes.css'
234
+ TEMPLATE_RUBY_REGEX = File.readlines(
235
+ "#{DIRECTORY_WITH_CSS_FILES}ruby_regexes.css",
236
+ encoding: ::Cyberweb.main_encoding?
237
+ ).join('')
238
+ else
239
+ TEMPLATE_RUBY_REGEX = ''
240
+ end
241
+
242
+ # ========================================================================= #
243
+ # === @array_found_these_css_classes
244
+ #
245
+ # This Array will be populated whenever a css class is used in a
246
+ # WebApp.
247
+ #
248
+ # These css classes will be stored in a unique fashion.
249
+ #
250
+ # NO duplicates!
251
+ # ========================================================================= #
252
+ @array_found_these_css_classes = []
253
+
254
+ # ========================================================================= #
255
+ # === Cyberweb.print_this_css
256
+ #
257
+ # Use this to print your custom css style.
258
+ # ========================================================================= #
259
+ def self.print_this_css(css)
260
+ ee return_this_css_style(css)
261
+ end; self.instance_eval { alias add_css_style print_this_css } # === Cyberweb.add_css_style (Added 12.11.2014)
262
+ self.instance_eval { alias inline_css print_this_css } # === Cyberweb.inline_css
263
+
264
+ # ========================================================================= #
265
+ # === Cyberweb.output_this_css_style
266
+ # ========================================================================= #
267
+ def self.output_this_css_style(i)
268
+ print return_this_css_style(i)
269
+ end
270
+
271
+ # ========================================================================= #
272
+ # === Cyberweb.generate_cap_box
273
+ #
274
+ # Code in this method can be used to generate a "cap-box", which is
275
+ # mostly a div header with some content.
276
+ #
277
+ # The method also accepts a Block, such as:
278
+ #
279
+ # {{ width: '80%' }}
280
+ #
281
+ # ========================================================================= #
282
+ def self.generate_cap_box(
283
+ use_this_title_for_the_upper_box = 'Hello world!',
284
+ # ===================================================================== #
285
+ # The next variable is the inner content - by default it will
286
+ # be empty.
287
+ # ===================================================================== #
288
+ title_for_the_content_header = '',
289
+ inner_content = '', # This is the inner content.<br>Looks fancy!<br>',
290
+ border_to_use = '3px solid #2a2a2a',
291
+ box_width = '700px'
292
+ )
293
+ if block_given?
294
+ yielded = yield
295
+ if yielded.is_a? Hash
296
+ # === :width
297
+ if yielded.has_key? :width
298
+ box_width = yielded.delete(:width).to_s
299
+ end
300
+ end
301
+ end
302
+ css_style_to_use = '#cap_box_container {
303
+ border: '+border_to_use+';
304
+ background: #ddd;
305
+ box-shadow: 0 0 5px #b1b1b1;
306
+ }
307
+
308
+ .cap_box_wrapper {
309
+ font-family: Arial, Arial, Helvetica, sans-serif;
310
+ width: '+box_width+';
311
+ line-height: 1.5;
312
+ margin: 0 auto;
313
+ }
314
+
315
+ .cap_box_header {
316
+ background: #222;
317
+ border: 5px solid #444;
318
+ padding: 10px;
319
+ margin: 0 -35px 20px;
320
+ position: relative;
321
+ }
322
+
323
+ .cap_box_header .cap_box_inner {
324
+ overflow: hidden;
325
+ color: #fff;
326
+ }
327
+
328
+ #cap_box_top_main_area {
329
+ margin-top: 20px;
330
+ padding: 0 20px 90px;
331
+ background-color: #fff;
332
+ }
333
+
334
+ /* This is the shadow on the left hand side. */
335
+ .cap_box_header .triangle_on_the_left_hand_side {
336
+ border: 10px solid black;
337
+ border-color: transparent transparent black;
338
+ width: 0;
339
+ height: 0;
340
+ display: block;
341
+ position: absolute;
342
+ bottom: -15px;
343
+ left: 0;
344
+ transform: rotate(45deg);
345
+ -webkit-transform: rotate(45deg);
346
+ }
347
+
348
+ /* This is the shadow on the right hand side. */
349
+ .cap_box_header .triangle_on_the_right_hand_side {
350
+ border: 10px solid black;
351
+ border-color: black transparent transparent;
352
+ width: 0;
353
+ height: 0;
354
+ display: block;
355
+ position: absolute;
356
+ top: -15px;
357
+ right: 0;
358
+ transform: rotate(45deg);
359
+ }'.dup
360
+ return addnl(
361
+ return_this_css_style(
362
+ css_style_to_use.to_s
363
+ ).to_s+
364
+ div('cap_box_wrapper', id: 'drag_cap_box_wrapper') {
365
+ div(id: 'cap_box_container') {
366
+ div(id: 'cap_box_top_main_area') {
367
+ div('cap_box_header') {
368
+ div('cap_box_inner') {
369
+ ee "<b>#{use_this_title_for_the_upper_box}</b>"
370
+ }
371
+ ee '<span class="triangle_on_the_left_hand_side"></span>
372
+ <span class="triangle_on_the_right_hand_side"></span>'
373
+ }
374
+ if title_for_the_content_header and !title_for_the_content_header.empty?
375
+ h1_id(title_for_the_content_header.dup)
376
+ end
377
+ ee inner_content
378
+ }
379
+ }
380
+ }
381
+ )
382
+ end
383
+
384
+ # ========================================================================= #
385
+ # === found_these_css_classes?
386
+ #
387
+ # Return which CSS classes we found. That array gets populated
388
+ # through the method return_css_class() - see below.
389
+ # ========================================================================= #
390
+ def found_these_css_classes?
391
+ ::Cyberweb.found_these_css_classes
392
+ end
393
+
394
+ # ========================================================================= #
395
+ # === generate_info_box
396
+ #
397
+ # The original was taken from:
398
+ #
399
+ # http://aktuell.de.selfhtml.org/artikel/css/infobox/
400
+ #
401
+ # ========================================================================= #
402
+ def generate_info_box(
403
+ text_to_be_shown_on_the_popup_box = 'Lorem ipsum dolor sit amet,
404
+ consectetuer adipiscing elit, sed diam nonummy nibh euismod
405
+ tincidunt ut laoreet dolore magna aliquam erat volutpat.'
406
+ )
407
+ ee '<style type="text/css">
408
+ img {
409
+ border:none;
410
+ }
411
+
412
+ #infobox {
413
+ height: 80px;
414
+ width: 80px;
415
+ padding: 0;
416
+ margin: 20px;
417
+ border: 1px solid black;
418
+ font: bold 14px verdana, sans-serif;
419
+ }
420
+
421
+ #infobox div { display:none; }
422
+
423
+ #infobox:hover div{
424
+ display: block;
425
+ width: 400px;
426
+ position:absolute;
427
+ top: 95%;
428
+ right:5px;
429
+ border:2px dashed black;
430
+ padding:18px;
431
+ font:normal 15px verdana, sans-serif;
432
+ }
433
+
434
+ </style>
435
+ <div id="infobox">
436
+ <a href="beispiel3b.htm">
437
+ <img src="http://aktuell.de.selfhtml.org/artikel/css/infobox/schmetterling.png" width="80" height="80" alt="schmetterling">
438
+ </a>
439
+
440
+ <div><p><strong>INFO</strong></p>
441
+ <p>'+text_to_be_shown_on_the_popup_box+'</p>
442
+ <p><img src="http://aktuell.de.selfhtml.org/artikel/css/infobox/schmetterling.png" width="150" height="150" alt=""></p>
443
+ <ul>
444
+ <li>Lorem ipsum dolor sit amet</li>
445
+ <li>Lorem ipsum dolor sit amet</li>
446
+ <li>Lorem ipsum dolor sit amet</li>
447
+ </ul>
448
+ </div>'
449
+ end; alias add_info_box generate_info_box # === add_info_box
450
+
451
+ # ========================================================================= #
452
+ # === css_comment
453
+ # ========================================================================= #
454
+ def css_comment(i)
455
+ ::Cyberweb.css_comment(i)
456
+ end
457
+
458
+ # ========================================================================= #
459
+ # === Cyberweb.found_these_css_classes
460
+ # ========================================================================= #
461
+ def self.found_these_css_classes
462
+ @array_found_these_css_classes
463
+ end
464
+
465
+ # ========================================================================= #
466
+ # === report_which_css_classes_were_found
467
+ #
468
+ # Report which css classes we have found.
469
+ # ========================================================================= #
470
+ def report_which_css_classes_were_found(
471
+ i = found_these_css_classes?
472
+ )
473
+ i.each_with_index {|entry, index|
474
+ index += 1
475
+ e '('+index.to_s+') <b>'+entry+'</b>'
476
+ }
477
+ end
478
+
479
+ # ========================================================================= #
480
+ # === print_css_class
481
+ #
482
+ # Prints a CSS class.
483
+ # ========================================================================= #
484
+ def print_css_class(css_class)
485
+ ee return_css_class(css_class)
486
+ end
487
+
488
+ # ========================================================================= #
489
+ # === print_css_style
490
+ #
491
+ # Will simply print the css style to use.
492
+ # ========================================================================= #
493
+ def print_css_style(css_style = '')
494
+ ee return_css_style(css_style)
495
+ end
496
+
497
+ # ========================================================================= #
498
+ # === include_css
499
+ #
500
+ # Use this method to include a CSS file. The first given argument to
501
+ # this method, `css_file`, needs to specify the _full_ location to
502
+ # the .css file in question.
503
+ #
504
+ # We will also append '.css' if this is missing.
505
+ # ========================================================================= #
506
+ def include_css(css_file)
507
+ css_file << '.css' unless css_file.end_with? '.css'
508
+ css_file = '<link rel="stylesheet" type="text/css" href="'+css_file+'" />'
509
+ css_file << NL
510
+ return css_file
511
+ end; alias include_css_file include_css # === include_css
512
+ alias link_to_css_file include_css # === link_to_css_file
513
+
514
+ # ========================================================================= #
515
+ # === string_my_css
516
+ #
517
+ # This method will return CSS as string
518
+ #
519
+ # As my_css but will just returns a string.
520
+ # string_my_css(input)
521
+ # ========================================================================= #
522
+ def string_my_css(
523
+ input,
524
+ use_these_css_files = ARRAY_DEFAULT_CSS_FILES_TO_INCLUDE
525
+ )
526
+ output = ''
527
+ _ = '<link rel="stylesheet" type="text/css" href="'
528
+ input << 'DATA/cascading_style_sheets/'
529
+ use_these_css_files.each {|css_file|
530
+ output << (
531
+ _+input+css_file+'.css" />' + NL
532
+ )
533
+ }
534
+ return output
535
+ end
536
+
537
+ # ========================================================================= #
538
+ # === print_css
539
+ #
540
+ # Prints generic CSS. Hmmmmm
541
+ # ========================================================================= #
542
+ def print_css(
543
+ change_to = ::Cyberweb.converted_path,
544
+ print_all = true
545
+ )
546
+ ee return_css(change_to, print_all)
547
+ end
548
+
549
+ # ========================================================================= #
550
+ # === return_this_css_style
551
+ # ========================================================================= #
552
+ def return_this_css_style(
553
+ i,
554
+ use_newlines = true
555
+ )
556
+ return ::Cyberweb.return_this_css_style(i, use_newlines)
557
+ end; alias css_style= return_this_css_style # === css_style=
558
+
559
+ # ========================================================================= #
560
+ # === return_css_style
561
+ # ========================================================================= #
562
+ def return_css_style(i = '')
563
+ ::Cyberweb.return_css_style(i)
564
+ end
565
+
566
+ # ========================================================================= #
567
+ # === Cyberweb.return_css_style
568
+ #
569
+ # This method will simply return CSS that can be used in HTML tags.
570
+ #
571
+ # Something such as:
572
+ #
573
+ # style="foobar"
574
+ #
575
+ # ========================================================================= #
576
+ def self.return_css_style(
577
+ i = ''
578
+ )
579
+ _ = i.to_s.dup # The result value.
580
+ unless _.empty?
581
+ _ = ' style="'+_+'"'
582
+ end
583
+ return _
584
+ end; self.instance_eval { alias return_this_css return_css_style } # === Cyberweb.return_this_css
585
+
586
+ # ========================================================================= #
587
+ # === return_unique_css_id
588
+ # ========================================================================= #
589
+ def return_unique_css_id
590
+ _ = ''.dup
591
+ 20.times {
592
+ _ << ALPHABET.sample
593
+ }
594
+ _
595
+ end
596
+
597
+ # ========================================================================= #
598
+ # === Cyberweb.return_css_class
599
+ #
600
+ # This method will return a css class - but only when the input
601
+ # given to this method is NOT empty. In other words: empty arguments
602
+ # will be ignored.
603
+ #
604
+ # ARRAY_RANDOM_COLOUR also includes RAND.
605
+ # ========================================================================= #
606
+ def self.return_css_class(
607
+ css_class = ''
608
+ )
609
+ # ======================================================================= #
610
+ # Ensure that we have a String from this point.
611
+ # ======================================================================= #
612
+ css_class = css_class.to_s.strip
613
+ unless css_class.empty?
614
+ ARRAY_RANDOM_COLOUR.each {|word|
615
+ css_class.gsub!(/#{word}/, 'color: '+return_random_colour)
616
+ } if css_class.include? 'COL'
617
+ # ===================================================================== #
618
+ # Handle colour input next.
619
+ # ===================================================================== #
620
+ css_class = ::Cyberweb.sanitize_for_colours(css_class) # Since as of Nov 2014.
621
+ css_class.strip!
622
+ result = ''.dup
623
+ # ===================================================================== #
624
+ # Append onto the Array that keeps track of which CSS classes were
625
+ # found.
626
+ # ===================================================================== #
627
+ (
628
+ ::Cyberweb.found_these_css_classes << css_class.split(' ')
629
+ ).flatten!.uniq!
630
+ result << ' class="' << css_class << '"'
631
+ return result # Early return in this case.
632
+ end
633
+ '' # Otherwise an empty String will be returned.
634
+ end; self.instance_eval { alias css_class= return_css_class } # === Cyberweb.css_class=
635
+
636
+ # ========================================================================= #
637
+ # === return_css_class
638
+ # ========================================================================= #
639
+ def return_css_class(
640
+ css_class = ''
641
+ )
642
+ ::Cyberweb.return_css_class(css_class)
643
+ end; alias css_class= return_css_class # === css_class=
644
+
645
+ # ========================================================================= #
646
+ # === generate_the_id_for_the_coloured_box_background
647
+ #
648
+ # We need to generate a unique ID because otherwise we can
649
+ # not use re-use the same div box on the same box.
650
+ # ========================================================================= #
651
+ def generate_the_id_for_the_coloured_box_background
652
+ return '#coloured_box_background_'+return_unique_css_id
653
+ end
654
+
655
+ # ========================================================================= #
656
+ # === generate_coloured_box
657
+ #
658
+ # This will generate the coloured box.
659
+ # ========================================================================= #
660
+ def generate_coloured_box(
661
+ background_colour_to_use = '#93cde9',
662
+ padding_to_use = '25px',
663
+ text_to_display = 'Test',
664
+ height = '100px'
665
+ )
666
+ id_for_the_coloured_box = generate_the_id_for_the_coloured_box_background
667
+ if background_colour_to_use.empty?
668
+ background_colour_to_use = '#93cde9'
669
+ end
670
+ background_colour_to_use = background_colour_to_use.to_s.dup
671
+ if padding_to_use.empty?
672
+ padding_to_use = '25px'
673
+ end
674
+ # The return string is stored in the variable _.
675
+ _ = <<-EOF
676
+
677
+ <style>
678
+
679
+ #{id_for_the_coloured_box} {
680
+ background-color: #{background_colour_to_use};
681
+ padding: #{padding_to_use};
682
+ }
683
+ #{id_for_the_coloured_box}_fg {
684
+ background-color: #c4e4f3;
685
+ width: 300px;
686
+ height: #{height};
687
+ box-shadow: 0px 0px 8px #ffffff;
688
+ -webkit-box-shadow: 0px 0px 8px #ffffff;
689
+ }
690
+ </style>
691
+ <div id="#{id_for_the_coloured_box}">
692
+ <div id="#{id_for_the_coloured_box}_fg">
693
+ #{text_to_display}
694
+ </div>
695
+ </div>
696
+ EOF
697
+ return _
698
+ end
699
+
700
+ class Css # === Cyberweb::Css
701
+
702
+ attr_accessor :optional
703
+
704
+ # ========================================================================= #
705
+ # === DEFAULT_CSS_CLASS
706
+ # ========================================================================= #
707
+ DEFAULT_CSS_CLASS = 'marl1em BO'
708
+
709
+ # ========================================================================= #
710
+ # === initialize
711
+ # ========================================================================= #
712
+ def initialize
713
+ reset
714
+ end
715
+
716
+ # ========================================================================= #
717
+ # === _
718
+ # ========================================================================= #
719
+ def _
720
+ @optional
721
+ end
722
+
723
+ # ========================================================================= #
724
+ # === reset
725
+ # ========================================================================= #
726
+ def reset
727
+ @optional = DEFAULT_CSS_CLASS
728
+ end
729
+
730
+ end
731
+
732
+ end