scriptorium 0.0.3 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. checksums.yaml +4 -4
  2. data/README.lt3 +324 -0
  3. data/README.md +3155 -1
  4. data/assets/.DS_Store +0 -0
  5. data/assets/README.md +44 -0
  6. data/assets/icons/social/reddit.png +0 -0
  7. data/assets/icons/social/x-logo.png +0 -0
  8. data/assets/icons/ui/.DS_Store +0 -0
  9. data/assets/icons/ui/back.png +0 -0
  10. data/assets/icons/ui/copy.png +0 -0
  11. data/assets/icons/ui/down.png +0 -0
  12. data/assets/icons/ui/end.png +0 -0
  13. data/assets/icons/ui/exit.png +0 -0
  14. data/assets/icons/ui/foo +10 -0
  15. data/assets/icons/ui/home.png +0 -0
  16. data/assets/icons/ui/left.png +0 -0
  17. data/assets/icons/ui/next.png +0 -0
  18. data/assets/icons/ui/right.png +0 -0
  19. data/assets/icons/ui/start.png +0 -0
  20. data/assets/icons/ui/up.png +0 -0
  21. data/assets/imagenotfound.jpg +0 -0
  22. data/assets/samples/placeholder.svg +9 -0
  23. data/assets/themes/standard/favicon.svg +6 -0
  24. data/bin/sblog +84 -5
  25. data/bin/scriptorium +1 -0
  26. data/doc/README.txt +6 -0
  27. data/doc/anti-amnesia/20250727-054000-scriptorium-overview.md +94 -0
  28. data/doc/anti-amnesia/20250727-123000-anti-amnesia-conventions.md +2 -0
  29. data/doc/anti-amnesia/20250727-172600-cursor-rbenv-ruby-version-mystery.md +45 -0
  30. data/doc/anti-amnesia/20250727-172900-ai-cognitive-assessment-capabilities.md +40 -0
  31. data/doc/anti-amnesia/20250728-124243-aaa-syntax-clarification.md +46 -0
  32. data/doc/anti-amnesia/20250729-210000-reddit-autopost-integration-complete.md +158 -0
  33. data/doc/anti-amnesia/20250804-190500-cognitive-loop-bug.md +35 -0
  34. data/doc/anti-amnesia/20250804-190700-anti-amnesia-timestamping-fix.md +27 -0
  35. data/doc/anti-amnesia/20250807-213025.md +116 -0
  36. data/doc/anti-amnesia/20250901-211714-codemirror-integration-and-web-tests.md +172 -0
  37. data/doc/anti-amnesia/20250902-002402-backup-restore-system.md +126 -0
  38. data/doc/anti-amnesia/20250907-203339-backup-metadata-implementation.md +66 -0
  39. data/doc/banner_svg_config.md +114 -0
  40. data/doc/contrib.lt3 +8 -0
  41. data/doc/dependencies.md +281 -0
  42. data/doc/hacker.lt3 +5 -0
  43. data/doc/imported/0001-elixir-conf-2014/metadata.txt +7 -0
  44. data/doc/imported/0001-elixir-conf-2014/post.html +37 -0
  45. data/doc/imported/0001-elixir-conf-2014/source.lt3 +22 -0
  46. data/doc/imported/0002-programmers-and-word-processing/metadata.txt +7 -0
  47. data/doc/imported/0002-programmers-and-word-processing/post.html +192 -0
  48. data/doc/imported/0002-programmers-and-word-processing/source.lt3 +146 -0
  49. data/doc/imported/0003-how-to-turn-your-brain-sideways/metadata.txt +7 -0
  50. data/doc/imported/0003-how-to-turn-your-brain-sideways/post.html +60 -0
  51. data/doc/imported/0003-how-to-turn-your-brain-sideways/source.lt3 +40 -0
  52. data/doc/imported/0004-upcoming-lone-star-ruby-conference/metadata.txt +7 -0
  53. data/doc/imported/0004-upcoming-lone-star-ruby-conference/post.html +42 -0
  54. data/doc/imported/0004-upcoming-lone-star-ruby-conference/source.lt3 +24 -0
  55. data/doc/imported/0005-elixir-conf-2015-announced/metadata.txt +7 -0
  56. data/doc/imported/0005-elixir-conf-2015-announced/post.html +30 -0
  57. data/doc/imported/0005-elixir-conf-2015-announced/source.lt3 +16 -0
  58. data/doc/imported/0006-ruby-for-dinosaurs/metadata.txt +7 -0
  59. data/doc/imported/0006-ruby-for-dinosaurs/post.html +43 -0
  60. data/doc/imported/0006-ruby-for-dinosaurs/source.lt3 +27 -0
  61. data/doc/imported/0007-phoenix-isnt-rails/metadata.txt +7 -0
  62. data/doc/imported/0007-phoenix-isnt-rails/post.html +116 -0
  63. data/doc/imported/0007-phoenix-isnt-rails/source.lt3 +87 -0
  64. data/doc/imported/0008-concerning-the-term-monkeypatching/metadata.txt +7 -0
  65. data/doc/imported/0008-concerning-the-term-monkeypatching/post.html +129 -0
  66. data/doc/imported/0008-concerning-the-term-monkeypatching/source.lt3 +92 -0
  67. data/doc/imported/0009-announcement-coming-soon/metadata.txt +7 -0
  68. data/doc/imported/0009-announcement-coming-soon/post.html +33 -0
  69. data/doc/imported/0009-announcement-coming-soon/source.lt3 +19 -0
  70. data/doc/imported/0010-immutable-data-ditching-the-wax-tablet/metadata.txt +7 -0
  71. data/doc/imported/0010-immutable-data-ditching-the-wax-tablet/post.html +175 -0
  72. data/doc/imported/0010-immutable-data-ditching-the-wax-tablet/source.lt3 +139 -0
  73. data/doc/imported/0011-computer-science-as-a-lost-art/metadata.txt +7 -0
  74. data/doc/imported/0011-computer-science-as-a-lost-art/post.html +139 -0
  75. data/doc/imported/0011-computer-science-as-a-lost-art/source.lt3 +104 -0
  76. data/doc/imported/0012-ruby-day-in-turin-italy/metadata.txt +7 -0
  77. data/doc/imported/0012-ruby-day-in-turin-italy/post.html +42 -0
  78. data/doc/imported/0012-ruby-day-in-turin-italy/source.lt3 +24 -0
  79. data/doc/imported/0013-rubyday-was-a-success/metadata.txt +7 -0
  80. data/doc/imported/0013-rubyday-was-a-success/post.html +44 -0
  81. data/doc/imported/0013-rubyday-was-a-success/source.lt3 +27 -0
  82. data/doc/imported/0014-working-on-the-blogging-software/metadata.txt +7 -0
  83. data/doc/imported/0014-working-on-the-blogging-software/post.html +63 -0
  84. data/doc/imported/0014-working-on-the-blogging-software/source.lt3 +41 -0
  85. data/doc/imported/0015-ok-its-not-really-a-lost-art/metadata.txt +7 -0
  86. data/doc/imported/0015-ok-its-not-really-a-lost-art/post.html +172 -0
  87. data/doc/imported/0015-ok-its-not-really-a-lost-art/source.lt3 +134 -0
  88. data/doc/imported/0016-an-in-operator-for-ruby/metadata.txt +7 -0
  89. data/doc/imported/0016-an-in-operator-for-ruby/post.html +155 -0
  90. data/doc/imported/0016-an-in-operator-for-ruby/source.lt3 +106 -0
  91. data/doc/imported/0017-the-forgotten-mathematician/metadata.txt +7 -0
  92. data/doc/imported/0017-the-forgotten-mathematician/post.html +161 -0
  93. data/doc/imported/0017-the-forgotten-mathematician/source.lt3 +119 -0
  94. data/doc/imported/0018-ruby-puns/metadata.txt +7 -0
  95. data/doc/imported/0018-ruby-puns/post.html +46 -0
  96. data/doc/imported/0018-ruby-puns/source.lt3 +28 -0
  97. data/doc/imported/0019-custom-exceptions-via-metaprogramming/metadata.txt +7 -0
  98. data/doc/imported/0019-custom-exceptions-via-metaprogramming/post.html +138 -0
  99. data/doc/imported/0019-custom-exceptions-via-metaprogramming/source.lt3 +101 -0
  100. data/doc/imported/0020-fffff/metadata.txt +7 -0
  101. data/doc/imported/0020-fffff/post.html +24 -0
  102. data/doc/imported/0020-fffff/source.lt3 +12 -0
  103. data/doc/imported/0021-trying-ror-yet-again/metadata.txt +7 -0
  104. data/doc/imported/0021-trying-ror-yet-again/post.html +26 -0
  105. data/doc/imported/0021-trying-ror-yet-again/source.lt3 +12 -0
  106. data/doc/imported/0023-doctor-sleep/metadata.txt +7 -0
  107. data/doc/imported/0023-doctor-sleep/post.html +63 -0
  108. data/doc/imported/0023-doctor-sleep/source.lt3 +44 -0
  109. data/doc/imported/0024-just-a-test/metadata.txt +7 -0
  110. data/doc/imported/0024-just-a-test/post.html +24 -0
  111. data/doc/imported/0024-just-a-test/source.lt3 +12 -0
  112. data/doc/imported/import_summary.txt +98 -0
  113. data/doc/livetext-informal-spec.txt +65 -0
  114. data/doc/myuserdoc/ch-0.lt3 +31 -0
  115. data/doc/myuserdoc/ch-1.lt3 +37 -0
  116. data/doc/myuserdoc/ch-10.lt3 +22 -0
  117. data/doc/myuserdoc/ch-2.lt3 +37 -0
  118. data/doc/myuserdoc/ch-3.lt3 +19 -0
  119. data/doc/myuserdoc/ch-4.lt3 +43 -0
  120. data/doc/myuserdoc/ch-5.lt3 +22 -0
  121. data/doc/myuserdoc/ch-6.lt3 +19 -0
  122. data/doc/myuserdoc/ch-7.lt3 +16 -0
  123. data/doc/myuserdoc/ch-8.lt3 +13 -0
  124. data/doc/myuserdoc/ch-9.lt3 +19 -0
  125. data/doc/myuserdoc/tweak.rb +18 -0
  126. data/doc/myuserdoc/userdoc-toc.txt +88 -0
  127. data/doc/old-posts/0001-elixir-conf-2014.lt3 +24 -0
  128. data/doc/old-posts/0002-programmers-and-word-processing.lt3 +150 -0
  129. data/doc/old-posts/0003-how-to-turn-your-brain-sideways.lt3 +43 -0
  130. data/doc/old-posts/0004-upcoming-lone-star-ruby-conference.lt3 +26 -0
  131. data/doc/old-posts/0005-elixir-conf-2015-announced.lt3 +17 -0
  132. data/doc/old-posts/0006-ruby-for-dinosaurs.lt3 +30 -0
  133. data/doc/old-posts/0007-phoenix-isnt-rails.lt3 +90 -0
  134. data/doc/old-posts/0008-concerning-the-term-monkeypatching.lt3 +105 -0
  135. data/doc/old-posts/0009-announcement-coming-soon.lt3 +20 -0
  136. data/doc/old-posts/0010-immutable-data-ditching-the-wax-tablet.lt3 +142 -0
  137. data/doc/old-posts/0011-computer-science-as-a-lost-art.lt3 +117 -0
  138. data/doc/old-posts/0012-ruby-day-in-turin-italy.lt3 +26 -0
  139. data/doc/old-posts/0013-rubyday-was-a-success.lt3 +28 -0
  140. data/doc/old-posts/0014-working-on-the-blogging-software.lt3 +42 -0
  141. data/doc/old-posts/0015-ok-its-not-really-a-lost-art.lt3 +137 -0
  142. data/doc/old-posts/0016-an-in-operator-for-ruby.lt3 +142 -0
  143. data/doc/old-posts/0017-the-forgotten-mathematician.lt3 +129 -0
  144. data/doc/old-posts/0018-ruby-puns.lt3 +31 -0
  145. data/doc/old-posts/0019-custom-exceptions-via-metaprogramming.lt3 +116 -0
  146. data/doc/old-posts/0021-trying-ror-yet-again.lt3 +35 -0
  147. data/doc/old-posts/0023-doctor-sleep.lt3 +43 -0
  148. data/doc/old-posts/0024-just-a-test.lt3 +12 -0
  149. data/doc/old-posts/0025-trying-another-post.lt3 +12 -0
  150. data/doc/old-repo +1 -0
  151. data/doc/reddit_credentials_template.json +8 -0
  152. data/doc/reddit_integration.md +207 -0
  153. data/doc/user.lt3 +35 -0
  154. data/doc/user_guide_section_1.md +137 -0
  155. data/doc/user_guide_section_10.md +515 -0
  156. data/doc/user_guide_section_11.md +708 -0
  157. data/doc/user_guide_section_2.md +233 -0
  158. data/doc/user_guide_section_3.md +5 -0
  159. data/doc/user_guide_section_4.md +221 -0
  160. data/doc/user_guide_section_5.md +243 -0
  161. data/doc/user_guide_section_6.md +147 -0
  162. data/doc/user_guide_section_7.md +311 -0
  163. data/doc/user_guide_section_8.md +224 -0
  164. data/doc/user_guide_section_9.md +375 -0
  165. data/lib/rouge/lexers/livetext.rb +74 -0
  166. data/lib/scriptorium/api.rb +2373 -0
  167. data/lib/scriptorium/banner_svg.rb +729 -0
  168. data/lib/scriptorium/contract.rb +34 -0
  169. data/lib/scriptorium/exceptions.rb +201 -1
  170. data/lib/scriptorium/helpers.rb +675 -0
  171. data/lib/scriptorium/post.rb +259 -0
  172. data/lib/scriptorium/reddit.rb +83 -0
  173. data/lib/scriptorium/repo.rb +938 -0
  174. data/lib/scriptorium/standard_files.rb +149 -0
  175. data/lib/scriptorium/support/bootstrap/css.txt +5 -0
  176. data/lib/scriptorium/support/bootstrap/js.txt +4 -0
  177. data/lib/scriptorium/support/common_js/clipboard.js +35 -0
  178. data/lib/scriptorium/support/common_js/content-loader.js +187 -0
  179. data/lib/scriptorium/support/common_js/navigation.js +52 -0
  180. data/lib/scriptorium/support/common_js/syntax-highlighting.js +27 -0
  181. data/lib/scriptorium/support/config/reddit.txt +10 -0
  182. data/lib/scriptorium/support/config/reddit_template.txt +17 -0
  183. data/lib/scriptorium/support/config/social.txt +8 -0
  184. data/lib/scriptorium/support/highlight/css.txt +2 -0
  185. data/lib/scriptorium/support/highlight/custom.css +119 -0
  186. data/lib/scriptorium/support/highlight/js.txt +1 -0
  187. data/lib/scriptorium/support/post_index/config.txt +15 -0
  188. data/lib/scriptorium/support/post_index/style.css +55 -0
  189. data/lib/scriptorium/support/templates/index_entry.lt3 +16 -0
  190. data/lib/scriptorium/support/templates/initial_post.lt3 +12 -0
  191. data/lib/scriptorium/support/templates/layout.txt +5 -0
  192. data/lib/scriptorium/support/templates/post.lt3 +104 -0
  193. data/lib/scriptorium/support/theme/footer.lt3 +2 -0
  194. data/lib/scriptorium/support/theme/header.lt3 +4 -0
  195. data/lib/scriptorium/support/theme/left.lt3 +3 -0
  196. data/lib/scriptorium/support/theme/main.lt3 +5 -0
  197. data/lib/scriptorium/support/theme/right.lt3 +3 -0
  198. data/lib/scriptorium/theme.rb +192 -0
  199. data/lib/scriptorium/version.rb +1 -1
  200. data/lib/scriptorium/view.rb +1021 -0
  201. data/lib/scriptorium/widgets/featured_posts.rb +149 -0
  202. data/lib/scriptorium/widgets/links.rb +112 -0
  203. data/lib/scriptorium/widgets/pages.rb +133 -0
  204. data/lib/scriptorium/widgets/widget.rb +133 -0
  205. data/lib/scriptorium.rb +38 -34
  206. data/lib/skeleton.rb +10 -1
  207. data/scriptorium.gemspec +17 -5
  208. data/test/README.md +69 -0
  209. data/test/WEB_INTEGRATION_README.md +196 -0
  210. data/test/all +83 -0
  211. data/test/api_demo.rb +99 -0
  212. data/test/assets/imagenotfound.jpg +0 -0
  213. data/test/assets/images/.DS_Store +0 -0
  214. data/test/assets/images/README.md +27 -0
  215. data/test/assets/images/odd_aspect.png +0 -0
  216. data/test/assets/images/perfect.png +0 -0
  217. data/test/assets/images/small.png +0 -0
  218. data/test/assets/images/tall.png +0 -0
  219. data/test/assets/images/very_tall.png +0 -0
  220. data/test/assets/images/very_wide.png +0 -0
  221. data/test/assets/images/wide.png +0 -0
  222. data/test/assets/testbanner.jpg +0 -0
  223. data/test/banner_svg/simple_helpers.rb +13 -0
  224. data/test/banner_svg/unit.rb +1000 -0
  225. data/test/config/deployment.txt +5 -0
  226. data/test/ed_test.rb +204 -0
  227. data/test/integration/cursor_banner_combinations.rb +193 -0
  228. data/test/integration/cursor_banner_features.rb +374 -0
  229. data/test/integration/integration_test.rb +326 -0
  230. data/test/integration/preview_flow_test.rb +94 -0
  231. data/test/livetext_plugin_test.rb +500 -0
  232. data/test/manual/asset_mgmt.rb +67 -0
  233. data/test/manual/banner-tests/index.html +45 -0
  234. data/test/manual/banner-tests/svg.txt +3 -0
  235. data/test/manual/banner-tests/test01.html +122 -0
  236. data/test/manual/banner-tests/test02.html +122 -0
  237. data/test/manual/banner-tests/test03.html +122 -0
  238. data/test/manual/banner-tests/test04.html +129 -0
  239. data/test/manual/banner-tests/test05.html +129 -0
  240. data/test/manual/banner-tests/test06.html +129 -0
  241. data/test/manual/banner-tests/test07.html +129 -0
  242. data/test/manual/banner-tests/test08.html +123 -0
  243. data/test/manual/banner-tests/test09.html +123 -0
  244. data/test/manual/banner-tests/test10.html +123 -0
  245. data/test/manual/banner-tests/test11.html +123 -0
  246. data/test/manual/banner-tests/test12.html +123 -0
  247. data/test/manual/banner-tests/test13.html +123 -0
  248. data/test/manual/banner-tests/test14.html +123 -0
  249. data/test/manual/banner-tests/test15.html +122 -0
  250. data/test/manual/banner-tests/test16.html +122 -0
  251. data/test/manual/banner-tests/test17.html +122 -0
  252. data/test/manual/banner-tests/test18.html +132 -0
  253. data/test/manual/banner-tests/test19.html +132 -0
  254. data/test/manual/banner-tests/test20.html +132 -0
  255. data/test/manual/banner-tests/test21.html +132 -0
  256. data/test/manual/banner-tests/test22.html +132 -0
  257. data/test/manual/banner-tests/test23.html +132 -0
  258. data/test/manual/banner-tests/test24.html +132 -0
  259. data/test/manual/banner-tests/test25.html +131 -0
  260. data/test/manual/banner_environment.rb +205 -0
  261. data/test/manual/codemirror_demo.html +773 -0
  262. data/test/manual/create_posts_for_web.rb +114 -0
  263. data/test/manual/environment.rb +67 -0
  264. data/test/manual/make_banner.rb +153 -0
  265. data/test/manual/preview_manual_test.rb +129 -0
  266. data/test/manual/sample_banner_config.txt +12 -0
  267. data/test/manual/test_advanced_widgets.rb +73 -0
  268. data/test/manual/test_banner_combinations.rb +120 -0
  269. data/test/manual/test_banner_features.rb +306 -0
  270. data/test/manual/test_banner_integration.rb +115 -0
  271. data/test/manual/test_banner_radial.rb +87 -0
  272. data/test/manual/test_basic_posts.rb +47 -0
  273. data/test/manual/test_layout_widgets.rb +40 -0
  274. data/test/manual/test_pagination.rb +24 -0
  275. data/test/manual/test_random_posts.rb +38 -0
  276. data/test/manual/test_syntax_highlighting.rb +167 -0
  277. data/test/rubytext/rubytext_comprehensive_test.rb +307 -0
  278. data/test/rubytext/rubytext_demo_test.rb +42 -0
  279. data/test/rubytext/rubytext_testing_guide.md +277 -0
  280. data/test/run_automated_tests.rb +45 -0
  281. data/test/staging/.DS_Store +0 -0
  282. data/test/support/preview_utils.rb +88 -0
  283. data/test/syntax_highlighting_test.lt3 +124 -0
  284. data/test/test_gem_assets.rb +48 -0
  285. data/test/test_helpers.rb +240 -0
  286. data/test/tui_editor_integration_test.rb +296 -0
  287. data/test/tui_integration_test.rb +883 -0
  288. data/test/unit/api.rb +1776 -0
  289. data/test/unit/asset_management.rb +219 -0
  290. data/test/unit/backup_test.rb +451 -0
  291. data/test/unit/clipboard_test.rb +60 -0
  292. data/test/unit/contract_test.rb +69 -0
  293. data/test/unit/core.rb +1211 -0
  294. data/test/unit/deploy_config_test.rb +248 -0
  295. data/test/unit/deploy_test.rb +478 -0
  296. data/test/unit/edit_post_test.rb +168 -0
  297. data/test/unit/gem_asset_management.rb +183 -0
  298. data/test/unit/livetext_basic.rb +57 -0
  299. data/test/unit/livetext_compatibility.rb +82 -0
  300. data/test/unit/parse_cmd_test.rb +260 -0
  301. data/test/unit/permalink_copy_test.rb +211 -0
  302. data/test/unit/post.rb +309 -0
  303. data/test/unit/post_index_config_test.rb +258 -0
  304. data/test/unit/post_state_helpers_test.rb +137 -0
  305. data/test/unit/read_commented_file_test.rb +278 -0
  306. data/test/unit/reddit_test.rb +235 -0
  307. data/test/unit/repo.rb +569 -0
  308. data/test/unit/social_test.rb +366 -0
  309. data/test/unit/syntax_highlighting.rb +70 -0
  310. data/test/unit/theme_management_test.rb +91 -0
  311. data/test/unit/view.rb +498 -0
  312. data/test/unit/widgets.rb +669 -0
  313. data/test/web_integration_test.rb +231 -0
  314. data/test/web_test_helper.rb +218 -0
  315. data/test/web_workflow_test.rb +527 -0
  316. data/test/wizard_test.rb +123 -0
  317. data/ui/README.md +67 -0
  318. data/ui/common/lib/ui_common.rb +8 -0
  319. data/ui/rubytext/README.md +191 -0
  320. data/ui/rubytext/bin/scriptorium-rubytext +402 -0
  321. data/ui/rubytext/lib/rubytext_ui.rb +300 -0
  322. data/ui/tui/bin/scriptorium +1890 -0
  323. data/ui/tui/test/tui_test.rb +23 -0
  324. data/ui/web/app/app.rb +2600 -0
  325. data/ui/web/app/assets/livetext_mode.js +244 -0
  326. data/ui/web/app/error_helpers.rb +150 -0
  327. data/ui/web/app/views/advanced_config.erb +196 -0
  328. data/ui/web/app/views/asset_management.erb +645 -0
  329. data/ui/web/app/views/backup_management.erb +238 -0
  330. data/ui/web/app/views/banner_config.erb +200 -0
  331. data/ui/web/app/views/config_widget.erb +232 -0
  332. data/ui/web/app/views/configure_view.erb +401 -0
  333. data/ui/web/app/views/dashboard.erb +154 -0
  334. data/ui/web/app/views/deploy_config.erb +149 -0
  335. data/ui/web/app/views/edit_pages.erb +363 -0
  336. data/ui/web/app/views/edit_post.erb +175 -0
  337. data/ui/web/app/views/edit_theme.erb +73 -0
  338. data/ui/web/app/views/edit_theme_file.erb +74 -0
  339. data/ui/web/app/views/error_page.erb +29 -0
  340. data/ui/web/app/views/header_config.erb +155 -0
  341. data/ui/web/app/views/layout_config.erb +147 -0
  342. data/ui/web/app/views/navbar_config.erb +411 -0
  343. data/ui/web/app/views/theme_management.erb +130 -0
  344. data/ui/web/app/views/view_dashboard.erb +779 -0
  345. data/ui/web/app/views/widgets.erb +249 -0
  346. data/ui/web/bin/scriptorium-web +164 -0
  347. data/ui/web/test/web_basic_test.rb +38 -0
  348. data/ui/web/test_navbar.txt +7 -0
  349. data/ui/web/tmp/timing.log +17 -0
  350. data/ui/web/tmp/web_server.log +0 -0
  351. metadata +434 -8
  352. data/lib/scriptorium/engine.rb +0 -22
  353. data/test/engine/unit.rb +0 -44
@@ -0,0 +1,12 @@
1
+ .h1 fffff
2
+
3
+ .set post.num = 0020
4
+ .set post.slug = fffff
5
+ .set post.date = 2020-01-21
6
+ .set post.title = fffff
7
+ .set post.tags =
8
+ .set post.views = computing computing
9
+ .set post.published = yes
10
+ .set post.deployed = no
11
+
12
+
@@ -0,0 +1,7 @@
1
+ num 0021
2
+ title Trying ROR yet again
3
+ date 2020-06-15
4
+ pubdate 2020-06-15
5
+ views computing
6
+ tags
7
+ pinned
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Trying ROR yet again</title>
6
+ <meta name="generator" content="Scriptorium Import">
7
+ <meta property="og:title" content="Trying ROR yet again">
8
+ <meta property="og:locale" content="en_US">
9
+ <meta property="og:type" content="article">
10
+ <meta property="article:published_time" content="2020-06-15">
11
+ </head>
12
+ <body>
13
+ <article>
14
+ <header>
15
+ <h1>Trying ROR yet again</h1>
16
+ <time datetime="2020-06-15">June 15, 2020</time>
17
+ </header>
18
+
19
+ <div class="content">
20
+ <p>
21
+
22
+ Those who know me know I'm not a Rails guy.
23
+ </div>
24
+ </article>
25
+ </body>
26
+ </html>
@@ -0,0 +1,12 @@
1
+ .h1 Trying ROR yet again
2
+
3
+ .set post.num = 0021
4
+ .set post.slug = trying-ror-yet-again
5
+ .set post.date = 2020-06-15
6
+ .set post.title = Trying ROR yet again
7
+ .set post.tags =
8
+ .set post.views = computing
9
+ .set post.published = yes
10
+ .set post.deployed = no
11
+
12
+ Those who know me know I'm not a Rails guy.
@@ -0,0 +1,7 @@
1
+ num 0023
2
+ title Doctor Sleep
3
+ date 2020-11-07
4
+ pubdate 2020-11-07
5
+ views chiller
6
+ tags
7
+ pinned
@@ -0,0 +1,63 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Doctor Sleep</title>
6
+ <meta name="generator" content="Scriptorium Import">
7
+ <meta property="og:title" content="Doctor Sleep">
8
+ <meta property="og:locale" content="en_US">
9
+ <meta property="og:type" content="article">
10
+ <meta property="article:published_time" content="2020-11-07">
11
+ </head>
12
+ <body>
13
+ <article>
14
+ <header>
15
+ <h1>Doctor Sleep</h1>
16
+ <time datetime="2020-11-07">November 07, 2020</time>
17
+ </header>
18
+
19
+ <div class="content">
20
+ <p>
21
+ If you didn't know, this is the sequel to <i>The Shining</i>.
22
+
23
+ I have to say: It was well done. It's not a Kubrick movie (and there will
24
+ never be another one), but in its own way, it's faithful enough to the
25
+ original.
26
+
27
+ <p>
28
+ What do you get with a Stephen King story? Well, let's be honest. He is a
29
+ little too good for the stuff he writes. He himself said, "I am the literary
30
+ equivalent of a burger and fries." And he isn't wrong.
31
+
32
+ <p>
33
+ But on the other hand, his characters are wonderfully three-dimensional.
34
+ (To be honest, I'm quoting someone who taught a writing seminar I was in
35
+ years ago. But it's spot on.) He is a master of characterization and dialogue,
36
+ of plotting and pacing, and his use of language sometimes rises to the realm
37
+ of the sublime.
38
+
39
+ <p>
40
+ Of course, even a well-written book doesn't always mean a good movie. I have
41
+ seen some movies apparently based on his works that made me think: As an
42
+ author, he must be crying and hiding his face... all the way to the bank.
43
+
44
+ <p>
45
+ And though I have seen more King movies than I have read King novels, I
46
+ thought I could see his work shining through here. (Pun totally not intended.)
47
+ Add to that a few wonderful and innovative bits of CG, some interesting
48
+ camera angles, and yes, some really decent acting here and there. What you
49
+ then get is not exactly a masterpiece, but something well worth watching.
50
+
51
+ <p>
52
+ There are arguably some downsides here. Some of the effects might be a little
53
+ cheesy, some of the tropes a little timeworn, some of the acting a little off.
54
+ But so what? It's better than 90% of the stuff I've streamed lately.
55
+
56
+ <p>
57
+ I don't like "stars" for reviews. I'm trying to figure out what other kind of
58
+ little icon or widget or thingy I can use. But until then: <i>Doctor Sleep</i>
59
+ gets five stars.
60
+ </div>
61
+ </article>
62
+ </body>
63
+ </html>
@@ -0,0 +1,44 @@
1
+ .h1 Doctor Sleep
2
+
3
+ .set post.num = 0023
4
+ .set post.slug = doctor-sleep
5
+ .set post.date = 2020-11-07
6
+ .set post.title = Doctor Sleep
7
+ .set post.tags =
8
+ .set post.views = chiller
9
+ .set post.published = yes
10
+ .set post.deployed = no
11
+
12
+ If you didn't know, this is the sequel to The Shining.
13
+
14
+ I have to say: It was well done. It's not a Kubrick movie (and there will
15
+ never be another one), but in its own way, it's faithful enough to the
16
+ original.
17
+
18
+ What do you get with a Stephen King story? Well, let's be honest. He is a
19
+ little too good for the stuff he writes. He himself said, "I am the literary
20
+ equivalent of a burger and fries." And he isn't wrong.
21
+
22
+ But on the other hand, his characters are wonderfully three-dimensional.
23
+ (To be honest, I'm quoting someone who taught a writing seminar I was in
24
+ years ago. But it's spot on.) He is a master of characterization and dialogue,
25
+ of plotting and pacing, and his use of language sometimes rises to the realm
26
+ of the sublime.
27
+
28
+ Of course, even a well-written book doesn't always mean a good movie. I have
29
+ seen some movies apparently based on his works that made me think: As an
30
+ author, he must be crying and hiding his face... all the way to the bank.
31
+
32
+ And though I have seen more King movies than I have read King novels, I
33
+ thought I could see his work shining through here. (Pun totally not intended.)
34
+ Add to that a few wonderful and innovative bits of CG, some interesting
35
+ camera angles, and yes, some really decent acting here and there. What you
36
+ then get is not exactly a masterpiece, but something well worth watching.
37
+
38
+ There are arguably some downsides here. Some of the effects might be a little
39
+ cheesy, some of the tropes a little timeworn, some of the acting a little off.
40
+ But so what? It's better than 90% of the stuff I've streamed lately.
41
+
42
+ I don't like "stars" for reviews. I'm trying to figure out what other kind of
43
+ little icon or widget or thingy I can use. But until then: Doctor Sleep
44
+ gets five stars.
@@ -0,0 +1,7 @@
1
+ num 0024
2
+ title Just a test...
3
+ date 2024-01-30
4
+ pubdate 2024-01-30
5
+ views chiller
6
+ tags
7
+ pinned
@@ -0,0 +1,24 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Just a test...</title>
6
+ <meta name="generator" content="Scriptorium Import">
7
+ <meta property="og:title" content="Just a test...">
8
+ <meta property="og:locale" content="en_US">
9
+ <meta property="og:type" content="article">
10
+ <meta property="article:published_time" content="2024-01-30">
11
+ </head>
12
+ <body>
13
+ <article>
14
+ <header>
15
+ <h1>Just a test...</h1>
16
+ <time datetime="2024-01-30">January 30, 2024</time>
17
+ </header>
18
+
19
+ <div class="content">
20
+ [Content not available - this appears to be an incomplete post]
21
+ </div>
22
+ </article>
23
+ </body>
24
+ </html>
@@ -0,0 +1,12 @@
1
+ .h1 Just a test...
2
+
3
+ .set post.num = 0024
4
+ .set post.slug = just-a-test
5
+ .set post.date = 2024-01-30
6
+ .set post.title = Just a test...
7
+ .set post.tags =
8
+ .set post.views = chiller
9
+ .set post.published = yes
10
+ .set post.deployed = no
11
+
12
+ [Content not available - this appears to be an incomplete post]
@@ -0,0 +1,98 @@
1
+ Runeblog Import Summary
2
+ Generated: 2025-08-30 04:42:50
3
+ ==================================================
4
+
5
+ ✅ 0001 | 2014-07-29 | Elixir Conf 2014
6
+ Views: computing austin
7
+ Content: Available
8
+
9
+ ✅ 0002 | 2014-09-17 | Programmers and word processing
10
+ Views: computing writing
11
+ Content: Available
12
+
13
+ ✅ 0003 | 2015-07-17 | How to turn your brain sideways
14
+ Views: computing
15
+ Content: Available
16
+
17
+ ✅ 0004 | 2015-07-20 | Upcoming Lone Star Ruby Conference...
18
+ Views: computing austin
19
+ Content: Available
20
+
21
+ ✅ 0005 | 2015-07-22 | Elixir Conf 2015 announced
22
+ Views: computing
23
+ Content: Available
24
+
25
+ ✅ 0006 | 2015-07-23 | Ruby for Dinosaurs...
26
+ Views: computing
27
+ Content: Available
28
+
29
+ ✅ 0007 | 2015-07-27 | Phoenix isn't Rails
30
+ Views: computing
31
+ Content: Available
32
+
33
+ ✅ 0008 | 2015-08-10 | Concerning the term "monkeypatching"
34
+ Views: computing
35
+ Content: Available
36
+
37
+ ✅ 0009 | 2015-08-11 | Announcement coming soon...
38
+ Views: computing
39
+ Content: Available
40
+
41
+ ✅ 0010 | 2015-08-25 | Immutable data (ditching the wax tablet)
42
+ Views: computing
43
+ Content: Available
44
+
45
+ ✅ 0011 | 2015-09-17 | Computer science as a lost art
46
+ Views: computing
47
+ Content: Available
48
+
49
+ ✅ 0012 | 2015-11-10 | Ruby Day in Turin, Italy
50
+ Views: computing
51
+ Content: Available
52
+
53
+ ✅ 0013 | 2015-11-23 | RubyDay was a success
54
+ Views: computing
55
+ Content: Available
56
+
57
+ ✅ 0014 | 2016-04-14 | Working on the blogging software
58
+ Views: computing
59
+ Content: Available
60
+
61
+ ✅ 0015 | 2018-07-31 | OK, it's not really a lost art
62
+ Views: computing
63
+ Content: Available
64
+
65
+ ✅ 0016 | 2019-11-13 | An 'in' operator for Ruby
66
+ Views: computing
67
+ Content: Available
68
+
69
+ ✅ 0017 | 2019-12-25 | The Forgotten Mathematician
70
+ Views: computing
71
+ Content: Available
72
+
73
+ ✅ 0018 | 2020-01-21 | Ruby puns
74
+ Views: computing computing
75
+ Content: Available
76
+
77
+ ✅ 0020 | 2020-01-21 | fffff
78
+ Views: computing computing
79
+ Content: Available
80
+
81
+ ✅ 0019 | 2020-02-17 | Custom exceptions via metaprogramming
82
+ Views: computing computing
83
+ Content: Available
84
+
85
+ ✅ 0021 | 2020-06-15 | Trying ROR yet again
86
+ Views: computing
87
+ Content: Available
88
+
89
+ ✅ 0023 | 2020-11-07 | Doctor Sleep
90
+ Views: chiller
91
+ Content: Available
92
+
93
+ ⚠️ 0024 | 2024-01-30 | Just a test...
94
+ Views: chiller
95
+ Content: Placeholder only
96
+
97
+ Total posts imported: 23
98
+ Date range: 2014-07-29 to 2024-01-30
@@ -0,0 +1,65 @@
1
+ Markup guidelines
2
+ -----------------
3
+ 1. A line with no special content is rendered as-is. This includes
4
+ a blank line.
5
+ 2. The four "marker" characters are * _ ` ~ (bold, italic, code,
6
+ and strikethrough). These behave essentially the same way.
7
+ Let's use _ as a generic example.
8
+ 3. In general: A marker following a space or SOL marks a string
9
+ terminated by a space or EOL.
10
+ 4. A marker is never terminated by the same marker (as in markdown)
11
+ 5. A single marker is a prefix that applies to a single token (with
12
+ no embedded spaces)
13
+ 6. Examples:
14
+ This is *bold
15
+ This is _italic
16
+ This is `code
17
+ This is ~strikethrough
18
+ 7. A special case is the "doubled" marker; this is for tokens (still
19
+ with no embedded spaces) that end in a period or comma.
20
+ Examples:
21
+ Three variables are ``num, ``count, and ``max.
22
+ I am __hungry, I must say.
23
+ COBOL is just **wrong.
24
+ 8. When we need embedded spaces or greater control, we can use brackets
25
+ to delimit. Examples:
26
+ This is _[four words in italics].
27
+ You should run `[sblog web start] to start the server.
28
+ 9. A variable starts with a $; the identifier itself starts with a
29
+ letter (uppercase or lower); other characters may be letters, digits,
30
+ or underscores; period is legal, but only as a separator.
31
+ - No two periods in a row
32
+ - No period at beginning or end
33
+ 10. Variable examples: $foo $foo.bar $web_server $prep44
34
+ 11. Functions are named like variables, but start with $$.
35
+ Examples: $$max $$last.value $$this_line
36
+ 12. A function may be parameterless (as above)
37
+ 13. We may pass a single parameter (a string with no embedded spaces)
38
+ via a colon. Example: Please visit $$link:google.com soon.
39
+ 14. We may pass a longer parameter with brackets.
40
+ Example: Learn $$index[functional programming] today!
41
+ 15. If a bracket is not closed, EOL closes it.
42
+ 16. A one-line comment starts with ". " (dot-space) at beginning of line.
43
+ 17. A dot command is a dot+identifier at SOL. These may or may not have
44
+ parameters.
45
+ Examples:
46
+ .nopara
47
+ .index functional programming
48
+ .banner This is just a banner!
49
+ 18. As a special case, a dot command may be indented (preceded only by
50
+ spaces) with a $.
51
+ Examples:
52
+ .banner Not indented
53
+ $.banner Indented
54
+ $.index indentation
55
+ 19. Some dot commands can have bodies (a block of text terminated by .end).
56
+ 20. In general, a body can contain formatting, variables, and functions.
57
+ 21. A body cannot have dot commands inside it.
58
+ 22. Some dot commands DO NOT process their bodies (formatting, variables,
59
+ and functions. Notably .comment (block comment) does not. Also the
60
+ special .raw (terminated not by .end but by __RAW__) does not.
61
+ 23. Dotcmds .def and .func have Ruby code in their bodies.
62
+ 24. .code lang - this has language "lang" in its body.
63
+
64
+
65
+
@@ -0,0 +1,31 @@
1
+ .comment
2
+ xx. Core Concepts
3
+ What is Scriptorium?
4
+ - Static files
5
+ - What are views? and why?
6
+ - What is a repository?
7
+ - How does deployment work?
8
+ What is Livetext?
9
+ - Why Livetext?
10
+ - Syntax in brief (1-2 paragraphs)
11
+ .end
12
+
13
+ .chapter Core Concepts
14
+
15
+
16
+ .sec What is Scriptorium?
17
+
18
+ .sec - Static files
19
+
20
+ .sec - What are views? and why?
21
+
22
+ .sec - What is a repository?
23
+
24
+ .sec - How does deployment work?
25
+
26
+ .sec What is Livetext?
27
+
28
+ .sec - Why Livetext?
29
+
30
+ .sec - Syntax in brief (1-2 paragraphs)
31
+
@@ -0,0 +1,37 @@
1
+ .comment
2
+ xx. Getting Started
3
+ Quick installation (gem install)
4
+ Interactive setup
5
+ - create repo
6
+ - create first view
7
+ - other commands
8
+ - the sample view
9
+ - first blog post
10
+ Basic Configuration
11
+ Checking dependencies
12
+ The "standard" theme (only one for now)
13
+ .end
14
+
15
+ .chapter Getting Started
16
+
17
+
18
+ .sec Quick installation (gem install)
19
+
20
+ .sec Interactive setup
21
+
22
+ .subsec - create repo
23
+
24
+ .subsec - create first view
25
+
26
+ .subsec - other commands
27
+
28
+ .subsec - the sample view
29
+
30
+ .subsec - first blog post
31
+
32
+ .sec Basic Configuration
33
+
34
+ .sec Checking dependencies
35
+
36
+ .sec The "standard" theme (only one for now)
37
+
@@ -0,0 +1,22 @@
1
+ .comment
2
+ xx. Reference
3
+ Command Reference
4
+ Configuration Files
5
+ LiveText Reference
6
+ API Reference
7
+ View Tree Structure
8
+ .end
9
+
10
+ .chapter Reference
11
+
12
+
13
+ .sec Command Reference
14
+
15
+ .sec Configuration Files
16
+
17
+ .sec LiveText Reference
18
+
19
+ .sec API Reference
20
+
21
+ .sec View Tree Structure
22
+
@@ -0,0 +1,37 @@
1
+ .comment
2
+ xx. The Front Page
3
+ - containers and their uses
4
+ - configuring header
5
+ - banner
6
+ - navbar
7
+ - configuring a sidebar
8
+ - the main container: post index
9
+ Widgets
10
+ - Links
11
+ - Pages
12
+ - Featured Posts
13
+ .end
14
+
15
+ .chapter The Front Page
16
+
17
+
18
+ .sec - containers and their uses
19
+
20
+ .sec - configuring header
21
+
22
+ .sec - banner
23
+
24
+ .sec - navbar
25
+
26
+ .sec - configuring a sidebar
27
+
28
+ .sec - the main container: post index
29
+
30
+ .sec Widgets
31
+
32
+ .sec - Links
33
+
34
+ .sec - Pages
35
+
36
+ .sec - Featured Posts
37
+
@@ -0,0 +1,19 @@
1
+ .comment
2
+ xx. Deployment & Hosting
3
+ Local Development
4
+ Server Deployment
5
+ Domain Configuration
6
+ SSL Setup
7
+ .end
8
+
9
+ .chapter Deployment & Hosting
10
+
11
+
12
+ .sec Local Development
13
+
14
+ .sec Server Deployment
15
+
16
+ .sec Domain Configuration
17
+
18
+ .sec SSL Setup
19
+
@@ -0,0 +1,43 @@
1
+ .comment
2
+ xx. LiveText Basics
3
+ What is LiveText?
4
+ Basic Syntax
5
+ - inline formatting: boldface, italics, etc.
6
+ - simple dot commands (with/without parameters)
7
+ - comments
8
+ - dot commands taking a body and .end
9
+ - predefined variables
10
+ - predefined functions
11
+ - user variables
12
+ - writing your own dot commands and functions in Ruby
13
+ The Plugin for Scriptorium
14
+ Writing Posts
15
+ .end
16
+
17
+ .chapter LiveText Basics
18
+
19
+
20
+ .sec What is LiveText?
21
+
22
+ .sec Basic Syntax
23
+
24
+ .sec - inline formatting: boldface, italics, etc.
25
+
26
+ .sec - simple dot commands (with/without parameters)
27
+
28
+ .sec - comments
29
+
30
+ .sec - dot commands taking a body and .end
31
+
32
+ .sec - predefined variables
33
+
34
+ .sec - predefined functions
35
+
36
+ .sec - user variables
37
+
38
+ .sec - writing your own dot commands and functions in Ruby
39
+
40
+ .sec The Plugin for Scriptorium
41
+
42
+ .sec Writing Posts
43
+
@@ -0,0 +1,22 @@
1
+ .comment
2
+ xx. Managing posts
3
+ - create
4
+ - delete
5
+ - link
6
+ - unlink
7
+ - featured
8
+ .end
9
+
10
+ .chapter Managing posts
11
+
12
+
13
+ .sec - create
14
+
15
+ .sec - delete
16
+
17
+ .sec - link
18
+
19
+ .sec - unlink
20
+
21
+ .sec - featured
22
+
@@ -0,0 +1,19 @@
1
+ .comment
2
+ xx. Managing Pages
3
+ - Used in navbar
4
+ - Used in Pages widget
5
+ - Internal links
6
+ - Subdirectories under pages/
7
+ .end
8
+
9
+ .chapter Managing Pages
10
+
11
+
12
+ .sec - Used in navbar
13
+
14
+ .sec - Used in Pages widget
15
+
16
+ .sec - Internal links
17
+
18
+ .sec - Subdirectories under pages/
19
+
@@ -0,0 +1,16 @@
1
+ .comment
2
+ xx. Customization
3
+ - Themes and Styling (cloning)
4
+ - Templates
5
+ - Widgets and Features
6
+ .end
7
+
8
+ .chapter Customization
9
+
10
+
11
+ .sec - Themes and Styling (cloning)
12
+
13
+ .sec - Templates
14
+
15
+ .sec - Widgets and Features
16
+
@@ -0,0 +1,13 @@
1
+ .comment
2
+ xx. Advanced Features
3
+ Reddit Integration
4
+ Social Media Features
5
+ .end
6
+
7
+ .chapter Advanced Features
8
+
9
+
10
+ .sec Reddit Integration
11
+
12
+ .sec Social Media Features
13
+
@@ -0,0 +1,19 @@
1
+ .comment
2
+ xx. Troubleshooting
3
+ Common Issues
4
+ Dependency Management
5
+ Error Messages
6
+ Getting Help
7
+ .end
8
+
9
+ .chapter Troubleshooting
10
+
11
+
12
+ .sec Common Issues
13
+
14
+ .sec Dependency Management
15
+
16
+ .sec Error Messages
17
+
18
+ .sec Getting Help
19
+