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,1398 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === Cyberweb
6
+ #
7
+ # There are a few standards employed in the Cyberweb project.
8
+ #
9
+ # Use this general rule when passing arguments to tags:
10
+ #
11
+ # css_class, id, css_style
12
+ #
13
+ # In this very order. There shall be NO exception to this. Alternatively
14
+ # you can use a Hash - then the order does not matter.
15
+ #
16
+ # Some tags allow you to use a hash, such as:
17
+ #
18
+ # css_class: 'marl1em', css_style: 'border:1px solid red'
19
+ #
20
+ # Here you can obviously be more flexible.
21
+ # =========================================================================== #
22
+ # require 'cyberweb/toplevel_methods/misc.rb'
23
+ # Cyberweb.return_dataset_without_any_comments
24
+ # Cyberweb.right_arrow
25
+ # Cyberweb.dropdown_box
26
+ # Cyberweb.return_the_name
27
+ # Cyberweb.colourize_ruby_code
28
+ # =========================================================================== #
29
+ module Cyberweb
30
+
31
+ # ========================================================================= #
32
+ # Try to next include coderay, silently.
33
+ # ========================================================================= #
34
+ begin
35
+ require 'coderay'
36
+ rescue LoadError; end
37
+
38
+ require 'cyberweb/constants/project_constants.rb'
39
+ # ========================================================================= #
40
+ # Require the various web_object/toplevel_methods/ components next:
41
+ # ========================================================================= #
42
+ require 'cyberweb/images/images.rb'
43
+ require 'cyberweb/toplevel_methods/bold.rb'
44
+ require 'cyberweb/toplevel_methods/charsets.rb'
45
+ require 'cyberweb/toplevel_methods/cgi.rb'
46
+ require 'cyberweb/toplevel_methods/consider_serving_the_web_object.rb'
47
+ require 'cyberweb/toplevel_methods/ee.rb'
48
+ require 'cyberweb/toplevel_methods/hfin.rb'
49
+ require 'cyberweb/toplevel_methods/html_mode.rb'
50
+ require 'cyberweb/toplevel_methods/input.rb'
51
+ require 'cyberweb/toplevel_methods/last_modified.rb'
52
+ require 'cyberweb/toplevel_methods/padlem_and_marlem.rb'
53
+ require 'cyberweb/toplevel_methods/readlines.rb'
54
+ require 'cyberweb/toplevel_methods/remove_newlines.rb'
55
+ require 'cyberweb/toplevel_methods/return_html_to_head_start.rb'
56
+ require 'cyberweb/toplevel_methods/show_and_display.rb'
57
+ require 'cyberweb/toplevel_methods/string_body_start.rb'
58
+ require 'cyberweb/toplevel_methods/svg.rb'
59
+ require 'cyberweb/toplevel_methods/s2.rb'
60
+ require 'cyberweb/toplevel_methods/string_content.rb'
61
+ require 'cyberweb/toplevel_methods/write_what_into.rb'
62
+ require 'cyberweb/html_tags/option.rb'
63
+
64
+ # ========================================================================= #
65
+ # === Cyberweb.show_admin_icons
66
+ #
67
+ # Show all admin icons through this method.
68
+ # ========================================================================= #
69
+ def self.show_admin_icons
70
+ _ = ''.dup
71
+ ARRAY_LISTING_ALL_PROJECT_IMAGES.each { |entry|
72
+ use_this_id = File.basename(entry.to_s).to_s.downcase.delete('.')
73
+ _ << string_s2(entry, '','','s1px marl0_7em black')+
74
+ sg(
75
+ entry,
76
+ 'bblack0',
77
+ use_this_id
78
+ )
79
+ }
80
+ return _
81
+ end
82
+
83
+ # ========================================================================= #
84
+ # === show_ruby_file
85
+ #
86
+ # Display a ruby file here.
87
+ # ========================================================================= #
88
+ def show_ruby_file(
89
+ i = '/home/x/programming/ruby/src/test/'
90
+ )
91
+ read_and_display_file_if_it_exists(i)
92
+ end
93
+
94
+ # ========================================================================= #
95
+ # === pre_htmlentities
96
+ # ========================================================================= #
97
+ def pre_htmlentities(text = '', css_class = '', the_id = '', css_style = '')
98
+ pre(
99
+ text,css_class,the_id,css_style, :remove_html
100
+ ) # :remove_html means that we strip HTML entries in the text.
101
+ end
102
+
103
+ # ========================================================================= #
104
+ # === Cyberweb.response_header?
105
+ # ========================================================================= #
106
+ def self.response_header?
107
+ "HTTP/1.0 200 OK\r\n"
108
+ end
109
+
110
+ # ========================================================================= #
111
+ # === ebr
112
+ #
113
+ # Echo, then print content, then add a newline + '<br>' tag.
114
+ # ========================================================================= #
115
+ def ebr(input)
116
+ ee input+NL
117
+ nbr
118
+ end
119
+
120
+ # ========================================================================= #
121
+ # === Cyberweb.right_arrow
122
+ # ========================================================================= #
123
+ def self.right_arrow
124
+ '&rarr;'
125
+ end
126
+
127
+ # ========================================================================= #
128
+ # === Cyberweb.bruch
129
+ #
130
+ # This is a "bruch", aka a fraction. It is written in german mostly because
131
+ # I am quite lazy.
132
+ # ========================================================================= #
133
+ def self.bruch(a, b)
134
+ return "<sup>#{a}</sup>/<sub>#{b}</sub>"
135
+ end
136
+
137
+ # ========================================================================= #
138
+ # === Cyberweb.dropdown_box
139
+ #
140
+ # This method will generate a <select><option> listing, a drop-down
141
+ # interface. The input to this method must be an Array.
142
+ # ========================================================================= #
143
+ def self.dropdown_box(input)
144
+ if input.is_a? Array # Ok.
145
+ _ = '<select>'.dup
146
+ input.each {|line|
147
+ _ << string_option(line)
148
+ }
149
+ _ << string_close(:select)
150
+ return _ # And return the result here.
151
+ else
152
+ raise 'The method dropdown_box() requires an Array as argument.'
153
+ end
154
+ end; self.instance_eval { alias www_dropdown_box dropdown_box } # === Cyberweb.www_dropdown_box
155
+ self.instance_eval { alias html_dropdown_box dropdown_box } # === Cyberweb.html_dropdown_box
156
+
157
+ # ========================================================================= #
158
+ # === Cyberweb.return_the_name
159
+ #
160
+ # Some HTML tags will have a name identifier. This method here shall try
161
+ # to satisfy these tags.
162
+ # ========================================================================= #
163
+ def self.return_the_name(i = '')
164
+ _ = ' name="'+i.to_s+'"'
165
+ return _
166
+ end
167
+
168
+ # ========================================================================= #
169
+ # === Cyberweb.colourize_ruby_code (ruby tag)
170
+ #
171
+ # Use this to colourize ruby code. Be careful when using this though
172
+ # and only use it when you (a) need it and (b) when you have ruby
173
+ # code in question.
174
+ # ========================================================================= #
175
+ def self.colourize_ruby_code(_)
176
+ _ = _.dup
177
+ _.gsub!(/class /,
178
+ '<span class="BG_Black pad1px lightgreen bold">class </span>')
179
+ _.gsub!(/require/,
180
+ '<span class="pad1px red FI bold">require</span>')
181
+ _.gsub!(/end$/,
182
+ '<span class="BG_Black pad1px red bold">end</span>')
183
+ _.gsub!(/else/,
184
+ '<span class="BG_Black pad1px red bold">else</span>')
185
+ _.gsub!(/if /,
186
+ '<span class="BG_Black pad1px red bold">if </span>')
187
+ _.gsub!(/elsif/,
188
+ '<span class="BG_Black pad1px red bold">elsif</span>')
189
+ _.gsub!(/__FILE__/,
190
+ '<span class="BG_Black pad1px pink bold">__FILE__</span>')
191
+ _.gsub!(/\$PROGRAM_NAME/,
192
+ '<span class="BG_Black pad1px lightgreen bold">$PROGRAM_NAME</span>')
193
+ _.gsub!(/class (\w+) </,'<span class="BG_Black pad1px yel bold">class</span> \\1 <')
194
+ _.gsub!(/super\(\)/,'<span class="BG_Black pad1px cyan bold">super()</span>')
195
+ _.gsub!(/#!\/System\/Executables\/ruby -w/,'<span class="BG_Black pad1px green bold">#!/System/Executables/ruby -w</span>')
196
+ _.gsub!(/def (.*)/,
197
+ '<span class="BG_Black pad1px orange bold">def </span><span class="BG_Black BO pad1px lightblue">\1</span>')
198
+ _.gsub!(/do/,
199
+ '<span class="BG_Black pad1px orange bold">do</span>')
200
+ return _
201
+ end
202
+
203
+ # ========================================================================= #
204
+ # === @css_object
205
+ #
206
+ # The @css_object instance variable.
207
+ # ========================================================================= #
208
+ @css_object = nil # Initialize it is nil.
209
+
210
+ # ========================================================================= #
211
+ # === @enable_title_for_reading_files
212
+ # ========================================================================= #
213
+ @enable_title_for_reading_files = false
214
+
215
+ # ========================================================================= #
216
+ # === @simple_form
217
+ # ========================================================================= #
218
+ @simple_form = nil
219
+
220
+ # ========================================================================= #
221
+ # === @listing_counter
222
+ #
223
+ # Initialize the counter for listings here.
224
+ # ========================================================================= #
225
+ @listing_counter = 0
226
+
227
+ # ========================================================================= #
228
+ # === Cyberweb.simple_form
229
+ # ========================================================================= #
230
+ def self.simple_form
231
+ @simple_form
232
+ end
233
+
234
+ # ========================================================================= #
235
+ # === Cyberweb.simple_form=
236
+ # ========================================================================= #
237
+ def self.simple_form=(i)
238
+ @simple_form = i
239
+ end
240
+
241
+ # ========================================================================= #
242
+ # === Cyberweb.css_object=
243
+ # ========================================================================= #
244
+ def self.css_object=(i)
245
+ @css_object = i
246
+ end
247
+
248
+ # ========================================================================= #
249
+ # === Cyberweb.css_object?
250
+ # ========================================================================= #
251
+ def self.css_object?
252
+ @css_object
253
+ end; self.instance_eval { alias css_object css_object? }
254
+
255
+ # ========================================================================= #
256
+ # === Cyberweb.html_header
257
+ #
258
+ # Usage example:
259
+ #
260
+ # Cyberweb.html_header( :title => entry )
261
+ #
262
+ # ========================================================================= #
263
+ def self.html_header(optional_hash = {})
264
+ _ = return_html_to_head_start.dup
265
+ if optional_hash.has_key? :title # In this case, also add the title.
266
+ _ << string_title(optional_hash.delete(:title))
267
+ end
268
+ _ << string_body_start
269
+ return _
270
+ end
271
+
272
+ # ========================================================================= #
273
+ # === Cyberweb.display_environmental_variables
274
+ #
275
+ # Show all environmental variables.
276
+ # ========================================================================= #
277
+ def self.display_environmental_variables
278
+ div('pad1em TAL', id: 'environment_variables') {
279
+ h2 'The environmental variables are:','darkblue'
280
+ if ::Cyberweb::CGI.respond_to? :predefined_cgi_env_variables
281
+ array = CGI.predefined_cgi_env_variables
282
+ array.each {|entry|
283
+ e '<b class="larger">'+entry.to_s+'</b>: '+ENV[entry].to_s
284
+ }
285
+ end
286
+ }
287
+ end; self.instance_eval { alias show_environment display_environmental_variables } # === Cyberweb.show_environment
288
+ self.instance_eval { alias show_env display_environmental_variables } # === Cyberweb.show_env
289
+
290
+ # ========================================================================= #
291
+ # === Cyberweb.logfile?
292
+ #
293
+ # For now, we will return the constant MISSING_IMAGES_ARE_STORED_HERE here.
294
+ # ========================================================================= #
295
+ def self.logfile?
296
+ MISSING_IMAGES_ARE_STORED_HERE
297
+ end
298
+
299
+ # ========================================================================= #
300
+ # === Cyberweb.logging?
301
+ #
302
+ # Convenience method to find out the amount of logging we will do.
303
+ # ========================================================================= #
304
+ def self.logging?
305
+ config?['warnings'].to_s
306
+ end
307
+
308
+ # ========================================================================= #
309
+ # === Cyberweb.to_css_directory
310
+ #
311
+ # This method will always give us the path towards the CSS/ directory.
312
+ # ========================================================================= #
313
+ def self.to_css_directory
314
+ "#{converted_path}cascading_style_sheets/"
315
+ end
316
+
317
+ # ========================================================================= #
318
+ # === Cyberweb.load_webmin
319
+ # ========================================================================= #
320
+ def self.load_webmin
321
+ Dir["#{WEBMIN_DIRECTORY}*rb"].each {|file|
322
+ require WEBMIN_DIRECTORY+File.basename(file)
323
+ }
324
+ end; load_webmin
325
+
326
+ # ========================================================================= #
327
+ # === Cyberweb.start_server
328
+ #
329
+ # Start the webrick server through this method.
330
+ # ========================================================================= #
331
+ def self.start_server(
332
+ use_this_port = 3003
333
+ )
334
+ which_document_root_to_use = (Dir.pwd+'/').squeeze '/'
335
+ http_server = WEBrick::HTTPServer.new(
336
+ :Port => use_this_port,
337
+ :DocumentRoot => which_document_root_to_use
338
+ )
339
+ Colours.e 'Will be serving on '+
340
+ Colours.sfancy('http://localhost:'+use_this_port.to_s)
341
+ http_server.start
342
+ end
343
+
344
+ # ========================================================================= #
345
+ # === Cyberweb.load_standalone_classes
346
+ #
347
+ # Load all .rb files under standalone_classes/.
348
+ # ========================================================================= #
349
+ def self.load_standalone_classes
350
+ Dir[STANDALONE_CLASSES_DIRECTORY+'*rb'].each {|file|
351
+ require STANDALONE_CLASSES_DIRECTORY+File.basename(file)
352
+ }
353
+ end; load_standalone_classes
354
+
355
+ # ========================================================================= #
356
+ # === Cyberweb.load_css
357
+ # ========================================================================= #
358
+ def self.load_css
359
+ Dir[PROJECT_CSS_DIRECTORY+'*rb'].each {|file|
360
+ require PROJECT_CSS_DIRECTORY+File.basename(file)
361
+ }
362
+ end; load_css
363
+
364
+ # ========================================================================= #
365
+ # === Cyberweb.load_coloured_tags
366
+ #
367
+ # The coloured tags allow you to colourize your input.
368
+ #
369
+ # They are stored in the file coloured_tags.rb and can be
370
+ # autogenerated anew when necessary.
371
+ #
372
+ # For instance:
373
+ #
374
+ # green 'foo'
375
+ #
376
+ # Makes a green tag. Ideally, all coloured words should work that way.
377
+ # ========================================================================= #
378
+ def self.load_coloured_tags
379
+ require COLOURED_TAGS
380
+ end; load_coloured_tags
381
+
382
+ # ========================================================================= #
383
+ # === ARRAY_DEFAULT_JAVASCRIPT_LIBRARIES
384
+ #
385
+ # Specify here which Javascript libraries are to be loaded on default.
386
+ #
387
+ # This will simply be all files specified in:
388
+ #
389
+ # bl $CYBERWEB/yaml/js_files_to_load.yml
390
+ #
391
+ # ========================================================================= #
392
+ if File.exist? PROJECT_YAML_DIRECTORY+'js_files_to_load.yml' # MAIN_DIR is defined in web_requires.rb
393
+ ARRAY_DEFAULT_JAVASCRIPT_LIBRARIES = YAML.load_file(
394
+ "#{PROJECT_YAML_DIRECTORY}js_files_to_load.yml" # bl $WEB_FOUNDATION/yaml/js_files_to_load.yml
395
+ )
396
+ else
397
+ ARRAY_DEFAULT_JAVASCRIPT_LIBRARIES = []
398
+ end
399
+
400
+ # ========================================================================= #
401
+ # === n
402
+ #
403
+ # This method will simply print a newline (ee is aliased to print).
404
+ # ========================================================================= #
405
+ def n
406
+ ee N
407
+ end unless defined? n
408
+
409
+ # ========================================================================= #
410
+ # === remove_html_tags (no html tags)
411
+ #
412
+ # This method will simply remove all html tags from a string.
413
+ #
414
+ # We will make use of project RemoveHtml for this task, which
415
+ # will be used through Cyberweb.remove_html().
416
+ #
417
+ # Usage example:
418
+ #
419
+ # Cyberweb.remove_html_tags("<span>foobar</span><br><b>test</b>")
420
+ # "<span>foobar</span><b>test</b>".gsub(/\<.+\>/,'')
421
+ # y = Cyberweb.remove_html_tags( x )
422
+ # y = Cyberweb.remove_html_tags( readlines("LINUX_COMMANDS.html").join(' ') )
423
+ # MyLogger.write_what_to(y,'/final.html')
424
+ #
425
+ # ========================================================================= #
426
+ def remove_html_tags(input)
427
+ ::Cyberweb.remove_html(input)
428
+ end; alias no_html remove_html_tags # === no_html
429
+ alias de_html remove_html_tags # === de_html
430
+ alias strip_html remove_html_tags # === strip_html
431
+ alias remove_html remove_html_tags # === remove_html
432
+
433
+ # ========================================================================= #
434
+ # === create_directory
435
+ #
436
+ # Consistently use this method if you want to create a directory.
437
+ # So far this is only used in the file img.rb
438
+ # ========================================================================= #
439
+ def create_directory(d)
440
+ Dir.mkdir(d)
441
+ end
442
+
443
+ # ========================================================================= #
444
+ # === div_bord_1
445
+ # ========================================================================= #
446
+ def div_bord_1(css_class = '', the_id = '', css_style = '', javascript = '')
447
+ div(css_class, the_id, css_style+' RAND_BORD_1', javascript)
448
+ end; alias div_bord1px div_bord_1 # === div_bord1px
449
+
450
+ # ========================================================================= #
451
+ # === div_bord_2
452
+ # ========================================================================= #
453
+ def div_bord_2(css_class = '', the_id = '', css_style = '', javascript = '')
454
+ div(css_class, the_id, css_style+' RAND_BORD_2', javascript)
455
+ end; alias div_bord2px div_bord_2 # === div_bord2px
456
+
457
+ # ========================================================================= #
458
+ # === div_bord_3
459
+ # ========================================================================= #
460
+ def div_bord_3(css_class = '', the_id = '', css_style = '', javascript = '')
461
+ div(css_class, the_id, css_style+' RAND_BORD_3', javascript)
462
+ end; alias div_bord3px div_bord_3 # === div_bord3px
463
+
464
+ # ========================================================================= #
465
+ # === read_file_with_these_lines
466
+ #
467
+ # read_file_with_these_lines('ShebangFixer',1,5)
468
+ # ========================================================================= #
469
+ def read_file_with_these_lines(
470
+ this_file,
471
+ starting_line = 1,
472
+ ending_line = 5,
473
+ css_to_use = ''
474
+ )
475
+ _ = read_file(this_file)
476
+ _ = _[starting_line, ending_line] if _
477
+ pre _, css_to_use
478
+ end
479
+
480
+ # ========================================================================= #
481
+ # === string_html_start
482
+ #
483
+ # Just start of <html>, optionally like <html lang="en">
484
+ # ========================================================================= #
485
+ def string_html_start(
486
+ optional_language = ''
487
+ )
488
+ _ = return_html_start.dup
489
+ _ << ' lang="'+optional_language+'"' unless optional_language.empty?
490
+ _ << "#{NL}#{NL}"
491
+ return _
492
+ end
493
+
494
+ # ========================================================================= #
495
+ # === return_html_start
496
+ # ========================================================================= #
497
+ def return_html_start
498
+ ::Cyberweb.return_html_start
499
+ end
500
+
501
+ # ========================================================================= #
502
+ # === div_blue
503
+ #
504
+ # This is used in hardware_information.rb.
505
+ # ========================================================================= #
506
+ def div_blue(c = 'Black pad1em',i='',s='background-color:#7676b3;border: 1px solid black')
507
+ div(c,i,s) { yield if block_given? }
508
+ end
509
+
510
+ # ========================================================================= #
511
+ # === create_thumbnails_page
512
+ #
513
+ # create a html file of current image dirs.
514
+ # ========================================================================= #
515
+ def create_thumbnails_page(of_this_input_dir)
516
+ _ = get_images(of_this_input_dir)
517
+ ee 'Creating thumbnails page next ...'
518
+ end
519
+
520
+ # ========================================================================= #
521
+ # === pnl
522
+ #
523
+ # Prints a new line.
524
+ # ========================================================================= #
525
+ def pnl
526
+ ee NL
527
+ end; alias newline pnl # === newline
528
+
529
+ # ========================================================================= #
530
+ # === print_head_start
531
+ # ========================================================================= #
532
+ def print_head_start
533
+ ee return_head_start
534
+ end
535
+
536
+ # ========================================================================= #
537
+ # === print_strict_doctype
538
+ #
539
+ # Print the doctype to use, by calling the method return_strict_doctype().
540
+ # ========================================================================= #
541
+ def print_strict_doctype
542
+ ee return_strict_doctype
543
+ end
544
+
545
+ # ========================================================================= #
546
+ # === print_the_name
547
+ #
548
+ # Prints a html name tag by invoking the method return_the_name().
549
+ # ========================================================================= #
550
+ def print_the_name(of_this_name)
551
+ ee return_the_name(of_this_name)
552
+ end
553
+
554
+ # ========================================================================= #
555
+ # === l_e
556
+ #
557
+ # This will use the css class marl0_5em.
558
+ # ========================================================================= #
559
+ def l_e(text, css_class = '', the_id = '', css_style = '')
560
+ e text,'marl0_5em '+css_class, the_id, css_style
561
+ end
562
+
563
+ # ========================================================================= #
564
+ # === output_content_type
565
+ #
566
+ # Use this method if you wish to output the content type.
567
+ # ========================================================================= #
568
+ def output_content_type
569
+ ee CONTENT_TYPE_PLAIN
570
+ end
571
+
572
+ # ========================================================================= #
573
+ # === output_response_header
574
+ # ========================================================================= #
575
+ def output_response_header
576
+ ee HTTP_RESPONSE_HEADER
577
+ end
578
+
579
+ # ========================================================================= #
580
+ # === div_note
581
+ #
582
+ # This method makes a little <div> tag. It makes use of a special CSS
583
+ # file called admonition.css.
584
+ #
585
+ # Usage example:
586
+ # div_note 'Note','Good requirements.'
587
+ # ========================================================================= #
588
+ def div_note(
589
+ title = '',
590
+ paragraph_content = '',
591
+ optional_id = ''
592
+ )
593
+ div('admonition',optional_id) {
594
+ p('p_title1') { e title }
595
+ p { e paragraph_content }
596
+ }
597
+ end
598
+
599
+ # ========================================================================= #
600
+ # === Cyberweb.get_files_from
601
+ #
602
+ # This method returns all files from a given directory (first argument).
603
+ # ========================================================================= #
604
+ def self.get_files_from(
605
+ this_dir = Dir.pwd,
606
+ return_full_path = false,
607
+ traverse_into_subdirectories_as_well = false
608
+ )
609
+ unless this_dir.include? '*'
610
+ this_dir = this_dir.dup if this_dir.frozen?
611
+ this_dir << '*'
612
+ end
613
+ all_files = Dir[this_dir]
614
+
615
+ if traverse_into_subdirectories_as_well
616
+ this_dir << '/' unless this_dir.end_with? '/' # Let's ensure we have a directory here.
617
+ all_files = Dir[this_dir+'/*/**']
618
+ end
619
+
620
+ return all_files # Finally, return all of our results.
621
+ end; self.instance_eval { alias get_all_files_from get_files_from } # === Cyberweb.get_all_files_from
622
+ self.instance_eval { alias get_files get_files_from } # === Cyberweb.get_files
623
+
624
+ # ========================================================================= #
625
+ # === make_row
626
+ #
627
+ # Use this method to make an entry. It is generally used within a form.
628
+ #
629
+ # Usage examples:
630
+ #
631
+ # make_row 'Base Dir:','base_dir','BG_Black lightblue'
632
+ # make_row 'Description:','description','BG_Black lightgreen'
633
+ # ========================================================================= #
634
+ def make_row(
635
+ description,
636
+ input_id,
637
+ optional_css = '',
638
+ colour_for_border = 'mediumslateblue'
639
+ )
640
+ trtd description
641
+ # s2 description
642
+ ctd
643
+ td
644
+ input_br :text,'','s0_1em mar1px pad1px s4px marl1_5em '+optional_css,
645
+ input_id, 'border:1px solid '+colour_for_border # RAND_COLOUR
646
+ ctdctr
647
+ end
648
+
649
+ # ========================================================================= #
650
+ # === ibr
651
+ #
652
+ # Italic with linebreak.
653
+ # ========================================================================= #
654
+ def ibr(
655
+ text,
656
+ css_class = '',
657
+ the_id = '',
658
+ css_style = ''
659
+ )
660
+ text = sanitize_for_colours(text).to_s.dup
661
+ css_class = css_class.to_s.dup
662
+ i text, css_class, the_id, css_style
663
+ nbr
664
+ end
665
+
666
+ # ========================================================================= #
667
+ # === escaped_html
668
+ #
669
+ # Like escape_html(), but will output it. ehtml() is the more common
670
+ # variant.
671
+ # ========================================================================= #
672
+ def escaped_html(text)
673
+ ee escape_html(text)
674
+ end; alias ehtml escaped_html # === ehtml
675
+
676
+ # ========================================================================= #
677
+ # === colourize_nim_code
678
+ # ========================================================================= #
679
+ def colourize_nim_code(_)
680
+ _.gsub!(/discard/,
681
+ '<span class="BG_Black pad1px red bold">discard</span>')
682
+ _.gsub!(/^if/,
683
+ '<span class="BG_Black pad1px red bold">if</span>')
684
+ _.gsub!(/^else/,
685
+ '<span class="BG_Black pad1px red bold">else</span>')
686
+ _.gsub!(/#/,
687
+ '<span class="BG_Black pad1px grey bold">#</span>')
688
+ return _
689
+ end
690
+
691
+ # ========================================================================= #
692
+ # === return_random_image
693
+ #
694
+ # Default will be to return from Wallpaper directory.
695
+ # ========================================================================= #
696
+ def return_random_image(
697
+ directory = "#{IMAGE_DIRECTORY}/WALLPAPERS/"
698
+ )
699
+ directory = directory.dup if directory.frozen?
700
+ directory[0,0] = 'WALLPAPERS/' unless directory.include? 'WALLPAPERS'
701
+ return get_files_from(directory).sample
702
+ end
703
+
704
+ # ========================================================================= #
705
+ # === read_file (read file tag)
706
+ #
707
+ # Reads in a file. Nothing more, nothing less. If you need only a
708
+ # specific range from that file, you need to manipulate the
709
+ # resulting array on your own.
710
+ # ========================================================================= #
711
+ def read_file(i)
712
+ if i.is_a? Symbol # Assume in this case that we want to use BeautifulUrl.
713
+ i = sanitize_url(i, true)
714
+ end
715
+ if File.directory?(i)
716
+ i = get_files_from(i, true)
717
+ i.each { |dir|
718
+ unless File.zero?(dir) # unless it is empty.
719
+ link dir, sg(:square_green,
720
+ 'marr4px wid5px bblack1')+dir,1,'slateblue'
721
+ end
722
+ }
723
+ else
724
+ i = readlines(i)
725
+ end
726
+ return i
727
+ end
728
+
729
+ # ========================================================================= #
730
+ # === print_html_start
731
+ # ========================================================================= #
732
+ def print_html_start
733
+ ee return_html_start
734
+ end
735
+
736
+ # ========================================================================= #
737
+ # === print_html_to_head_start
738
+ # ========================================================================= #
739
+ def print_html_to_head_start
740
+ ee return_html_to_head_start
741
+ end
742
+
743
+ # ========================================================================= #
744
+ # === return_head_start
745
+ # ========================================================================= #
746
+ def return_head_start
747
+ ::Cyberweb.return_head_start
748
+ end
749
+
750
+ # ========================================================================= #
751
+ # === bbrud
752
+ #
753
+ # This method combines bold (b), with breakline (br), and underline (ud).
754
+ #
755
+ # It is not often needed.
756
+ # ========================================================================= #
757
+ def bbrud(text, css_class = '', the_id = '', css_style = '')
758
+ boldbr(text, 'ud '+css_class, the_id, css_style)
759
+ end
760
+
761
+ # ========================================================================= #
762
+ # === read_and_display_for_ruby
763
+ #
764
+ # It is however unspecific to any programming language.
765
+ # ========================================================================= #
766
+ def read_and_display_for_ruby(f,
767
+ c = 'bblack2',
768
+ i = '',
769
+ style = '',
770
+ colourize_me = true,
771
+ do_escape_html = false
772
+ )
773
+ read_and_display(f, c, i, style, colourize_me, do_escape_html)
774
+ end; alias read_display_with_ruby read_and_display_for_ruby # === read_display_with_ruby
775
+ alias read_display_for_nimrod read_and_display_for_ruby # === read_display_for_nimrod
776
+ alias read_display_ruby read_and_display_for_ruby # === read_display_ruby
777
+
778
+ # ========================================================================= #
779
+ # === add_ruby_code
780
+ #
781
+ # This method depends on CodeRay. It will simply parse some ruby code.
782
+ # ========================================================================= #
783
+ def add_ruby_code(i)
784
+ CodeRay.scan(i, :ruby).div
785
+ end
786
+
787
+ # ========================================================================= #
788
+ # === show_ip
789
+ #
790
+ # This shows the ip of the visitor, by invoking the method get_ip().
791
+ # ========================================================================= #
792
+ def show_ip
793
+ e 'The IP is:'
794
+ e get_ip,'yel'
795
+ end
796
+
797
+ # ========================================================================= #
798
+ # === localhost_to_data
799
+ #
800
+ # This will replace localhost with the corresponding entry.
801
+ # ========================================================================= #
802
+ def localhost_to_data(i)
803
+ i.sub(/localhost/, '/')
804
+ end
805
+
806
+ # ========================================================================= #
807
+ # === no_http
808
+ #
809
+ # Returns a variant without leading "http://" string. Please use this
810
+ # method whenever getting rid of http.
811
+ # ========================================================================= #
812
+ def no_http(i)
813
+ return i.gsub(/^http:\/\//, '')
814
+ end
815
+
816
+ # ========================================================================= #
817
+ # === print_meta_collection
818
+ #
819
+ # Print meta stuff like robots info etc.
820
+ # ========================================================================= #
821
+ def print_meta_collection
822
+ ee return_meta_collection
823
+ end
824
+
825
+ # ========================================================================= #
826
+ # === show_image_checkbox
827
+ #
828
+ # This will display a small cute little checkbox. It omits the id tag
829
+ # because I think there is no point in using an id for such a small
830
+ # checkbox.
831
+ #
832
+ # Usage example:
833
+ #
834
+ # show_image_checkbox :on, 'posab','top:10em;right:18%'
835
+ #
836
+ # ========================================================================= #
837
+ def show_image_checkbox(
838
+ mode = :on,
839
+ css_class = '',
840
+ css_style = ''
841
+ )
842
+ case mode
843
+ when :off
844
+ img 'STD/CHECKBOX_OFF.png',css_class, '', css_style
845
+ when :on
846
+ img 'STD/CHECKBOX_ON.png', css_class, '', css_style
847
+ end
848
+ end
849
+
850
+ # ========================================================================= #
851
+ # === navgroup
852
+ #
853
+ # Make a simple navgroup.
854
+ # ========================================================================= #
855
+ def navgroup(*args)
856
+ ee '<nav>'
857
+ ee '<ul>'
858
+ args.flatten.each { |i|
859
+ ee '<li><a href="#">'+i+'</a></li>'
860
+ }
861
+ cul
862
+ cnav
863
+ end
864
+
865
+ # ========================================================================= #
866
+ # === valid_html
867
+ #
868
+ # W3, valid, validator
869
+ #
870
+ # Usage example:
871
+ #
872
+ # valid_html 's1em','s1px'
873
+ #
874
+ # ========================================================================= #
875
+ def valid_html(
876
+ div_class = '',
877
+ div_style = ''
878
+ )
879
+ div('FS0_8em Z100 '+div_class, '',div_style,'onmousedown="start_dragging(this)"'){
880
+ ee '<a href="http://validator.w3.org/check/referer">'
881
+ img 'STD/VALID_HTML.jpg','s1px','Valid_html_4.0'
882
+ c 'a'
883
+ ee '<a href="http://jigsaw.w3.org/css-validator/check/referer">'
884
+ img 'STD/VALID_CSS.jpg','s1px','Valid_css_4.0'
885
+ c 'a'
886
+ }
887
+ end
888
+
889
+ # ========================================================================= #
890
+ # === get_ip
891
+ #
892
+ # This returns the ip.
893
+ # ========================================================================= #
894
+ def get_ip
895
+ ENV['REMOTE_ADDR']
896
+ end
897
+
898
+ # ========================================================================= #
899
+ # === display_environmental_variables
900
+ #
901
+ # Show the CGI variables.
902
+ # ========================================================================= #
903
+ def display_environmental_variables
904
+ ::Cyberweb.display_environmental_variables
905
+ end; alias show_environment display_environmental_variables # === show_environment
906
+
907
+ # ========================================================================= #
908
+ # === block
909
+ # ========================================================================= #
910
+ def block(text, css_class = '', the_id = '', css_style = '')
911
+ e text, 'BLOCK '+css_class, the_id, css_style
912
+ end
913
+
914
+ # ========================================================================= #
915
+ # === websave_what_to
916
+ #
917
+ # Use this method to save the file somewhere.
918
+ # rfind web_foundation.log
919
+ # ========================================================================= #
920
+ def websave_what_to(
921
+ what,
922
+ where_to = "#{log_dir?}web_foundation.log",
923
+ mode = 'a+'
924
+ )
925
+ unless where_to.include? '/'
926
+ where_to = "#{log_dir?}#{where_to}"
927
+ end
928
+ # ======================================================================= #
929
+ # We may have to check for the file permissions first.
930
+ # ======================================================================= #
931
+ begin
932
+ if File.writable? where_to
933
+ File.open(where_to, mode) {|f| f.print(what, N) }
934
+ else
935
+ raise 'File not writable.'
936
+ end
937
+ rescue; end # silent rescue.
938
+ end; alias save_what websave_what_to # === save_what
939
+ alias save_what_to websave_what_to # === save_what_to
940
+
941
+ # ========================================================================= #
942
+ # === send_email
943
+ #
944
+ # Use this method to send an email.
945
+ # ========================================================================= #
946
+ def send_email
947
+ w.mail.deliver
948
+ end
949
+
950
+ # ========================================================================= #
951
+ # === right
952
+ # ========================================================================= #
953
+ def right(i)
954
+ e i,'FLR'
955
+ end
956
+
957
+ # ========================================================================= #
958
+ # === brbr
959
+ # ========================================================================= #
960
+ def brbr
961
+ br; br
962
+ end
963
+
964
+ # ========================================================================= #
965
+ # === get_all_directories_from
966
+ #
967
+ # Obtain all directories from a target path.
968
+ # ========================================================================= #
969
+ def get_all_directories_from(
970
+ where = Dir.pwd,
971
+ return_full_path = false
972
+ )
973
+ return Dir["#{where}/*"].reject {|entry| ! File.directory? entry }
974
+ end
975
+
976
+ # ========================================================================= #
977
+ # === warn
978
+ #
979
+ # A warning displayed via the <pre> tag.
980
+ # ========================================================================= #
981
+ def warn(i)
982
+ pre i,'red'
983
+ end; alias ewarn warn # === ewarn
984
+
985
+ # ========================================================================= #
986
+ # === rating
987
+ #
988
+ # Use this for a simple rating, so that we can display one star,
989
+ # two stars, three, four or five stars.
990
+ # ========================================================================= #
991
+ def rating(which_rating = 1)
992
+ case which_rating
993
+ when 0, 1, :one
994
+ _ = sg :one_star
995
+ when 2, :two
996
+ _ = sg :two_stars
997
+ when 3, :three
998
+ _ = sg :three_stars
999
+ when 4, :four
1000
+ _ = sg :four_stars
1001
+ when 5, :five
1002
+ _ = sg :five_stars
1003
+ end
1004
+ return _
1005
+ end
1006
+
1007
+ # ========================================================================= #
1008
+ # === content
1009
+ #
1010
+ # This is a nice little method, like I used to use e() in my old PHP
1011
+ # scripts. An alias to it is cont().
1012
+ # ========================================================================= #
1013
+ def content(inp)
1014
+ ee string_cont(inp)
1015
+ end; alias cont content # === cont
1016
+
1017
+ # ========================================================================= #
1018
+ # === object_frame
1019
+ #
1020
+ # This method generates an <object> tag, but in context of a passed src.
1021
+ #
1022
+ # Usage example:
1023
+ #
1024
+ # object_frame('../index.html')
1025
+ # div('mart10em'){ object_frame('../PC/PC.cgi') }
1026
+ # div('mar4em'){ object_frame('../PC/OS/LINUX/LINUX_COMMANDS.cgi','800','400') }
1027
+ #
1028
+ # ========================================================================= #
1029
+ def object_frame(
1030
+ src,
1031
+ optional_width = '95%',
1032
+ optional_height = '440',
1033
+ optional_css_class = 'bblack1 pad0_5em',
1034
+ optional_id = '',
1035
+ optional_css_style = ''
1036
+ )
1037
+ if src.is_a? Symbol # Intercept symbols here.
1038
+ src = sanitize_url(src)
1039
+ end
1040
+ if optional_width.is_a? Hash
1041
+ optional_width = optional_width.delete(:width) if optional_width.has_key? :width
1042
+ end
1043
+ ee '<object class="'+optional_css_class+'" data="'+src+
1044
+ '" type="text/html" name="framesPage" width="'+
1045
+ optional_width+'" height="'+optional_height+'" id="'+optional_id+'">'
1046
+ ee '<a href="/html-tutorials/verticalframes.php">Missing '+src+' frameset.</a>'
1047
+ c :object
1048
+ end; alias frame object_frame # === frame
1049
+ alias embedded_frame object_frame # We can also embed other pages.
1050
+
1051
+ # ========================================================================= #
1052
+ # === clear_list
1053
+ #
1054
+ # This method resets the listing counter again. It makes use of
1055
+ # web_object listing counter method.
1056
+ # ========================================================================= #
1057
+ def clear_list
1058
+ web_object.reset_counter
1059
+ end; alias reset_listing clear_list # === reset_listing
1060
+
1061
+ # ========================================================================= #
1062
+ # === l4em
1063
+ # ========================================================================= #
1064
+ def l4em(text, css_class = '', the_id = '', css_style = '')
1065
+ e text,'marl4em '+css_class, the_id, css_style
1066
+ end; alias marl4em l4em # === marl4em
1067
+ alias l4 l4em # === l4
1068
+ alias le4 l4em # === le4
1069
+
1070
+ # ========================================================================= #
1071
+ # === l5em
1072
+ # ========================================================================= #
1073
+ def l5em(text, css_class = '', the_id = '', css_style = '')
1074
+ e text,'marl5em '+css_class, the_id, css_style
1075
+ end; alias marl5em l5em # === marl5em
1076
+ alias l5 l5em # === l5
1077
+ alias le5 l5em # === le5
1078
+
1079
+ # ========================================================================= #
1080
+ # === Cyberweb.name_of_served_page?
1081
+ #
1082
+ # This method will return the name of the page that is served, which
1083
+ # is stored in the environment variable SCRIPT_NAME.
1084
+ #
1085
+ # The method will thus return something such as 'ADMIN.cgi'.
1086
+ # ========================================================================= #
1087
+ def self.name_of_served_page?(return_full_path = false)
1088
+ _ = ENV['SCRIPT_NAME'] # This value here will be returned.
1089
+ case return_full_path
1090
+ when :full_path
1091
+ return_full_path = true
1092
+ end
1093
+ if return_full_path
1094
+ ::Cyberweb.rds(server_directory?+_)
1095
+ else
1096
+ File.basename(_)
1097
+ end
1098
+ end
1099
+
1100
+ # ========================================================================= #
1101
+ # === name_of_served_page?
1102
+ # ========================================================================= #
1103
+ def name_of_served_page?(return_full_path = false)
1104
+ ::Cyberweb.name_of_served_page?(return_full_path)
1105
+ end; alias this_file? name_of_served_page? # === this_file?
1106
+
1107
+ # ========================================================================= #
1108
+ # === embed
1109
+ #
1110
+ # Allows you to embed SVG files, for instance.
1111
+ # ========================================================================= #
1112
+ def embed(svg_src = '',width = '150',height = '150')
1113
+ ee '<embed src="'+svg_src+'.svg" width="'+width+'" height="'+height+'">'
1114
+ end
1115
+
1116
+ # ========================================================================= #
1117
+ # === show_inhalt
1118
+ #
1119
+ # We show a file called INHALT here.
1120
+ # ========================================================================= #
1121
+ def show_inhalt(
1122
+ css_to_use = ''
1123
+ )
1124
+ read_and_display 'INHALT.md', css_to_use
1125
+ end
1126
+
1127
+ # ========================================================================= #
1128
+ # === pfeil_rechts
1129
+ # ========================================================================= #
1130
+ def pfeil_rechts(use_this_css_class = 'marr4px')
1131
+ sg(:pfeil_rechts, use_this_css_class)
1132
+ end
1133
+
1134
+ # ========================================================================= #
1135
+ # === sysinfo_header
1136
+ # ========================================================================= #
1137
+ def sysinfo_header(
1138
+ i, use_this_colour = 'cyan'
1139
+ )
1140
+ h2 sg(:chronik,'marr5px')+i, use_this_colour
1141
+ end
1142
+
1143
+ # ========================================================================= #
1144
+ # === l2em
1145
+ # ========================================================================= #
1146
+ def l2em(text, css_class = '', the_id = '', css_style = '')
1147
+ e text,'marl2em '+css_class, the_id, css_style
1148
+ end; alias marl2em l2em # === marl2em
1149
+ alias l2 l2em # === l2
1150
+ alias le2 l2em # === le2
1151
+ alias lee l2em # === lee
1152
+
1153
+ # ========================================================================= #
1154
+ # === read_file_into_array
1155
+ #
1156
+ # Read a file into an Array.
1157
+ # ========================================================================= #
1158
+ def read_file_into_array(i)
1159
+ result = []
1160
+ if File.exist? i
1161
+ result << readlines(i)
1162
+ end
1163
+ result.flatten
1164
+ end
1165
+
1166
+ # ========================================================================= #
1167
+ # === div_fin
1168
+ #
1169
+ # Supports yield since 29.11.2011.
1170
+ # ========================================================================= #
1171
+ def div_fin(
1172
+ css_class = '',
1173
+ the_id = '',
1174
+ css_style = '',
1175
+ javascript = ''
1176
+ )
1177
+ div(css_class = '', the_id = '', css_style = '', javascript = '')
1178
+ yield if block_given?
1179
+ cdiv # close the div tag properly.
1180
+ hfin
1181
+ end
1182
+
1183
+ # ========================================================================= #
1184
+ # === Cyberweb.string_bold
1185
+ # ========================================================================= #
1186
+ def self.string_bold(
1187
+ content = '',
1188
+ css_class = '',
1189
+ the_id = '',
1190
+ css_style = '',
1191
+ javascript = ''
1192
+ )
1193
+ string_s(
1194
+ content, 'b', css_class, the_id, css_style, javascript
1195
+ )
1196
+ end; self.instance_eval { alias string_b string_bold } # === Cyberweb.string_b
1197
+
1198
+ # ========================================================================= #
1199
+ # === string_bold
1200
+ # ========================================================================= #
1201
+ def string_bold(
1202
+ content = '',
1203
+ css_class = '',
1204
+ the_id = '',
1205
+ css_style = '',
1206
+ javascript = ''
1207
+ )
1208
+ ::Cyberweb.string_s(
1209
+ content, 'b', css_class, the_id, css_style, javascript
1210
+ )
1211
+ end; alias string_b string_bold # === string_b
1212
+
1213
+ # ========================================================================= #
1214
+ # === Cyberweb.left_arrow
1215
+ # ========================================================================= #
1216
+ def self.left_arrow
1217
+ '&larr;'
1218
+ end
1219
+
1220
+ # ========================================================================= #
1221
+ # === italic
1222
+ # ========================================================================= #
1223
+ def italic(
1224
+ text,
1225
+ css_class = '',
1226
+ the_id = '',
1227
+ css_style = ''
1228
+ )
1229
+ if css_class.frozen?
1230
+ css_class = css_class.dup
1231
+ end
1232
+ unless css_class.include? 'italic'
1233
+ # ===================================================================== #
1234
+ # In this case we will append 'italic'.
1235
+ # ===================================================================== #
1236
+ unless css_class.empty?
1237
+ css_class << ' '
1238
+ end
1239
+ css_class << 'italic'
1240
+ end
1241
+ ee string_span(
1242
+ text, css_class, the_id, css_style
1243
+ )
1244
+ end
1245
+
1246
+ # ========================================================================= #
1247
+ # === italicbrlem
1248
+ # ========================================================================= #
1249
+ def italicbrlem(
1250
+ text,
1251
+ css_class = '',
1252
+ the_id = '',
1253
+ css_style = ''
1254
+ )
1255
+ italicbr(text, css_class+' padl1em', the_id, css_style)
1256
+ end
1257
+
1258
+ # ========================================================================= #
1259
+ # === italicbr
1260
+ # ========================================================================= #
1261
+ def italicbr(
1262
+ text,
1263
+ css_class = '',
1264
+ the_id = '',
1265
+ css_style = ''
1266
+ )
1267
+ italic(text, css_class, the_id, css_style)
1268
+ br
1269
+ end
1270
+
1271
+ # ========================================================================= #
1272
+ # === Cyberweb.arrow_right
1273
+ # ========================================================================= #
1274
+ def self.arrow_right
1275
+ '→'
1276
+ end
1277
+
1278
+ # ========================================================================= #
1279
+ # === Cyberweb.generate_simple_webpage
1280
+ #
1281
+ # This ad-hoc method will just generate a .html page with all images
1282
+ # in this directory.
1283
+ # ========================================================================= #
1284
+ def self.generate_simple_webpage(
1285
+ from_this_directory = Dir.pwd
1286
+ )
1287
+ require 'cyberweb/toplevel_methods/images.rb'
1288
+ all_images = Dir["#{from_this_directory}/*"].select {|entry|
1289
+ File.file?(entry) and is_this_an_image?(entry)
1290
+ }
1291
+ _ = "<html><head><title>Simple Webpage</title></head><body><div>\n\n".dup
1292
+ _ << "<h2>All the images</h2>\n"
1293
+ all_images.each {|this_image|
1294
+ basename = File.basename(this_image)
1295
+ _ << '<img src="'+basename+'" alt="'+basename.downcase+'">'+"\n"
1296
+ }
1297
+ _ << '</div></body></html>'
1298
+ what = _
1299
+ into = 'simple_webpage.html'
1300
+ puts 'Creating the file '+into+' next.'
1301
+ write_what_into(what, into)
1302
+ if is_on_roebe?
1303
+ require 'open'
1304
+ Open.in_browser(into)
1305
+ end
1306
+ end
1307
+
1308
+ # ========================================================================= #
1309
+ # === Cyberweb.return_dataset_without_any_comments
1310
+ #
1311
+ # Note that this method will return a String.
1312
+ # ========================================================================= #
1313
+ def self.return_dataset_without_any_comments(i)
1314
+ i = i.split(N).map {|entry|
1315
+ if entry.include? ' #'
1316
+ entry = entry[0 .. (entry.index(' #') - 1)]
1317
+ end
1318
+ if entry.start_with? '#'
1319
+ entry = nil
1320
+ end
1321
+ entry
1322
+ }.compact.join(N) # The .compact is necessary since the code may return nil values.
1323
+ return i
1324
+ end
1325
+
1326
+ # ========================================================================= #
1327
+ # === Cyberweb.path_to_the_internal_javascript_directory?
1328
+ # ========================================================================= #
1329
+ def self.path_to_the_internal_javascript_directory?
1330
+ Cyberweb.project_base_directory?+'javascript_code/'
1331
+ end
1332
+
1333
+ # ========================================================================= #
1334
+ # === Cyberweb.try_to_open_this_URL_via_the_browser
1335
+ #
1336
+ # Usage example:
1337
+ #
1338
+ # Cyberweb.try_to_open_this_URL_via_the_browser(target, USE_THIS_PORT)
1339
+ #
1340
+ # ========================================================================= #
1341
+ def self.try_to_open_this_URL_via_the_browser(
1342
+ target, use_this_port = '4567'
1343
+ )
1344
+ begin
1345
+ require 'open'
1346
+ target = "http://localhost:#{use_this_port}/"
1347
+ if block_given? and (yield == :be_quiet)
1348
+ else
1349
+ puts ::Colours.sfancy(target)
1350
+ end
1351
+ Thread.new {
1352
+ Open.in_browser(target) {{ delay: '1.0 seconds' }}
1353
+ }
1354
+ rescue LoadError => error
1355
+ pp error
1356
+ end
1357
+ end
1358
+
1359
+ # ========================================================================= #
1360
+ # === Cyberweb.window (window tag)
1361
+ #
1362
+ # This method is ultimately just a wrapper over a <div> element with
1363
+ # a specified width and height setting. It is assumed to be used
1364
+ # in conjunction with the SimpleWidgets project.
1365
+ #
1366
+ # Usage example:
1367
+ #
1368
+ # x = Cyberweb.window
1369
+ #
1370
+ # ========================================================================= #
1371
+ def self.window(
1372
+ optional_title = 'Test',
1373
+ optional_width = 1024,
1374
+ optional_height = 800,
1375
+ options = {} # Additional options. Currently not in use.
1376
+ )
1377
+ style_content = 'width: '+optional_width.to_s+'px; height: '+optional_height.to_s+'px;'.dup
1378
+ # ======================================================================= #
1379
+ # === Handle Hashes next
1380
+ # ======================================================================= #
1381
+ if options.is_a? Hash
1382
+ # ===================================================================== #
1383
+ # === :css_style
1384
+ # ===================================================================== #
1385
+ if options.has_key? :css_style
1386
+ style_content << " #{options[:css_style]};".squeeze(';')
1387
+ end
1388
+ end
1389
+ result = '<div style="'+style_content+'">'+"\n"+
1390
+ '</div>'+"\n"
1391
+ return result
1392
+ end
1393
+
1394
+ end
1395
+
1396
+ if __FILE__ == $PROGRAM_NAME
1397
+ Cyberweb.generate_simple_webpage
1398
+ end # webobjectmisc