scriptorium 0.6.1 → 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 (358) hide show
  1. checksums.yaml +4 -4
  2. data/assets/icons/social/reddit.png +0 -0
  3. data/assets/icons/social/x-logo.png +0 -0
  4. data/assets/imagenotfound.jpg +0 -0
  5. data/bin/sblog +84 -5
  6. data/bin/scriptorium +1 -0
  7. data/doc/anti-amnesia/20250727-054000-scriptorium-overview.md +0 -1
  8. data/doc/anti-amnesia/20250727-123000-anti-amnesia-conventions.md +0 -29
  9. data/doc/anti-amnesia/20250727-172600-cursor-rbenv-ruby-version-mystery.md +0 -19
  10. data/doc/anti-amnesia/20250727-172900-ai-cognitive-assessment-capabilities.md +1 -1
  11. data/doc/anti-amnesia/20250728-124243-aaa-syntax-clarification.md +1 -1
  12. data/doc/anti-amnesia/20250729-210000-reddit-autopost-integration-complete.md +1 -1
  13. data/doc/anti-amnesia/20250804-190500-cognitive-loop-bug.md +0 -10
  14. data/doc/anti-amnesia/20250804-190700-anti-amnesia-timestamping-fix.md +1 -4
  15. data/doc/anti-amnesia/20250901-211714-codemirror-integration-and-web-tests.md +172 -0
  16. data/doc/anti-amnesia/20250902-002402-backup-restore-system.md +126 -0
  17. data/doc/anti-amnesia/20250907-203339-backup-metadata-implementation.md +66 -0
  18. data/doc/imported/0001-elixir-conf-2014/metadata.txt +7 -0
  19. data/doc/imported/0001-elixir-conf-2014/post.html +37 -0
  20. data/doc/imported/0001-elixir-conf-2014/source.lt3 +22 -0
  21. data/doc/imported/0002-programmers-and-word-processing/metadata.txt +7 -0
  22. data/doc/imported/0002-programmers-and-word-processing/post.html +192 -0
  23. data/doc/imported/0002-programmers-and-word-processing/source.lt3 +146 -0
  24. data/doc/imported/0003-how-to-turn-your-brain-sideways/metadata.txt +7 -0
  25. data/doc/imported/0003-how-to-turn-your-brain-sideways/post.html +60 -0
  26. data/doc/imported/0003-how-to-turn-your-brain-sideways/source.lt3 +40 -0
  27. data/doc/imported/0004-upcoming-lone-star-ruby-conference/metadata.txt +7 -0
  28. data/doc/imported/0004-upcoming-lone-star-ruby-conference/post.html +42 -0
  29. data/doc/imported/0004-upcoming-lone-star-ruby-conference/source.lt3 +24 -0
  30. data/doc/imported/0005-elixir-conf-2015-announced/metadata.txt +7 -0
  31. data/doc/imported/0005-elixir-conf-2015-announced/post.html +30 -0
  32. data/doc/imported/0005-elixir-conf-2015-announced/source.lt3 +16 -0
  33. data/doc/imported/0006-ruby-for-dinosaurs/metadata.txt +7 -0
  34. data/doc/imported/0006-ruby-for-dinosaurs/post.html +43 -0
  35. data/doc/imported/0006-ruby-for-dinosaurs/source.lt3 +27 -0
  36. data/doc/imported/0007-phoenix-isnt-rails/metadata.txt +7 -0
  37. data/doc/imported/0007-phoenix-isnt-rails/post.html +116 -0
  38. data/doc/imported/0007-phoenix-isnt-rails/source.lt3 +87 -0
  39. data/doc/imported/0008-concerning-the-term-monkeypatching/metadata.txt +7 -0
  40. data/doc/imported/0008-concerning-the-term-monkeypatching/post.html +129 -0
  41. data/doc/imported/0008-concerning-the-term-monkeypatching/source.lt3 +92 -0
  42. data/doc/imported/0009-announcement-coming-soon/metadata.txt +7 -0
  43. data/doc/imported/0009-announcement-coming-soon/post.html +33 -0
  44. data/doc/imported/0009-announcement-coming-soon/source.lt3 +19 -0
  45. data/doc/imported/0010-immutable-data-ditching-the-wax-tablet/metadata.txt +7 -0
  46. data/doc/imported/0010-immutable-data-ditching-the-wax-tablet/post.html +175 -0
  47. data/doc/imported/0010-immutable-data-ditching-the-wax-tablet/source.lt3 +139 -0
  48. data/doc/imported/0011-computer-science-as-a-lost-art/metadata.txt +7 -0
  49. data/doc/imported/0011-computer-science-as-a-lost-art/post.html +139 -0
  50. data/doc/imported/0011-computer-science-as-a-lost-art/source.lt3 +104 -0
  51. data/doc/imported/0012-ruby-day-in-turin-italy/metadata.txt +7 -0
  52. data/doc/imported/0012-ruby-day-in-turin-italy/post.html +42 -0
  53. data/doc/imported/0012-ruby-day-in-turin-italy/source.lt3 +24 -0
  54. data/doc/imported/0013-rubyday-was-a-success/metadata.txt +7 -0
  55. data/doc/imported/0013-rubyday-was-a-success/post.html +44 -0
  56. data/doc/imported/0013-rubyday-was-a-success/source.lt3 +27 -0
  57. data/doc/imported/0014-working-on-the-blogging-software/metadata.txt +7 -0
  58. data/doc/imported/0014-working-on-the-blogging-software/post.html +63 -0
  59. data/doc/imported/0014-working-on-the-blogging-software/source.lt3 +41 -0
  60. data/doc/imported/0015-ok-its-not-really-a-lost-art/metadata.txt +7 -0
  61. data/doc/imported/0015-ok-its-not-really-a-lost-art/post.html +172 -0
  62. data/doc/imported/0015-ok-its-not-really-a-lost-art/source.lt3 +134 -0
  63. data/doc/imported/0016-an-in-operator-for-ruby/metadata.txt +7 -0
  64. data/doc/imported/0016-an-in-operator-for-ruby/post.html +155 -0
  65. data/doc/imported/0016-an-in-operator-for-ruby/source.lt3 +106 -0
  66. data/doc/imported/0017-the-forgotten-mathematician/metadata.txt +7 -0
  67. data/doc/imported/0017-the-forgotten-mathematician/post.html +161 -0
  68. data/doc/imported/0017-the-forgotten-mathematician/source.lt3 +119 -0
  69. data/doc/imported/0018-ruby-puns/metadata.txt +7 -0
  70. data/doc/imported/0018-ruby-puns/post.html +46 -0
  71. data/doc/imported/0018-ruby-puns/source.lt3 +28 -0
  72. data/doc/imported/0019-custom-exceptions-via-metaprogramming/metadata.txt +7 -0
  73. data/doc/imported/0019-custom-exceptions-via-metaprogramming/post.html +138 -0
  74. data/doc/imported/0019-custom-exceptions-via-metaprogramming/source.lt3 +101 -0
  75. data/doc/imported/0020-fffff/metadata.txt +7 -0
  76. data/doc/imported/0020-fffff/post.html +24 -0
  77. data/doc/imported/0020-fffff/source.lt3 +12 -0
  78. data/doc/imported/0021-trying-ror-yet-again/metadata.txt +7 -0
  79. data/doc/imported/0021-trying-ror-yet-again/post.html +26 -0
  80. data/doc/imported/0021-trying-ror-yet-again/source.lt3 +12 -0
  81. data/doc/imported/0023-doctor-sleep/metadata.txt +7 -0
  82. data/doc/imported/0023-doctor-sleep/post.html +63 -0
  83. data/doc/imported/0023-doctor-sleep/source.lt3 +44 -0
  84. data/doc/imported/0024-just-a-test/metadata.txt +7 -0
  85. data/doc/imported/0024-just-a-test/post.html +24 -0
  86. data/doc/imported/0024-just-a-test/source.lt3 +12 -0
  87. data/doc/imported/import_summary.txt +98 -0
  88. data/doc/livetext-informal-spec.txt +65 -0
  89. data/doc/myuserdoc/ch-0.lt3 +31 -0
  90. data/doc/myuserdoc/ch-1.lt3 +37 -0
  91. data/doc/myuserdoc/ch-10.lt3 +22 -0
  92. data/doc/myuserdoc/ch-2.lt3 +37 -0
  93. data/doc/myuserdoc/ch-3.lt3 +19 -0
  94. data/doc/myuserdoc/ch-4.lt3 +43 -0
  95. data/doc/myuserdoc/ch-5.lt3 +22 -0
  96. data/doc/myuserdoc/ch-6.lt3 +19 -0
  97. data/doc/myuserdoc/ch-7.lt3 +16 -0
  98. data/doc/myuserdoc/ch-8.lt3 +13 -0
  99. data/doc/myuserdoc/ch-9.lt3 +19 -0
  100. data/doc/myuserdoc/tweak.rb +18 -0
  101. data/doc/{userdoc-toc.txt → myuserdoc/userdoc-toc.txt} +27 -27
  102. data/doc/old-posts/0001-elixir-conf-2014.lt3 +24 -0
  103. data/doc/old-posts/0002-programmers-and-word-processing.lt3 +150 -0
  104. data/doc/old-posts/0003-how-to-turn-your-brain-sideways.lt3 +43 -0
  105. data/doc/old-posts/0004-upcoming-lone-star-ruby-conference.lt3 +26 -0
  106. data/doc/old-posts/0005-elixir-conf-2015-announced.lt3 +17 -0
  107. data/doc/old-posts/0006-ruby-for-dinosaurs.lt3 +30 -0
  108. data/doc/old-posts/0007-phoenix-isnt-rails.lt3 +90 -0
  109. data/doc/old-posts/0008-concerning-the-term-monkeypatching.lt3 +105 -0
  110. data/doc/old-posts/0009-announcement-coming-soon.lt3 +20 -0
  111. data/doc/old-posts/0010-immutable-data-ditching-the-wax-tablet.lt3 +142 -0
  112. data/doc/old-posts/0011-computer-science-as-a-lost-art.lt3 +117 -0
  113. data/doc/old-posts/0012-ruby-day-in-turin-italy.lt3 +26 -0
  114. data/doc/old-posts/0013-rubyday-was-a-success.lt3 +28 -0
  115. data/doc/old-posts/0014-working-on-the-blogging-software.lt3 +42 -0
  116. data/doc/old-posts/0015-ok-its-not-really-a-lost-art.lt3 +137 -0
  117. data/doc/old-posts/0016-an-in-operator-for-ruby.lt3 +142 -0
  118. data/doc/old-posts/0017-the-forgotten-mathematician.lt3 +129 -0
  119. data/doc/old-posts/0018-ruby-puns.lt3 +31 -0
  120. data/doc/old-posts/0019-custom-exceptions-via-metaprogramming.lt3 +116 -0
  121. data/doc/old-posts/0021-trying-ror-yet-again.lt3 +35 -0
  122. data/doc/old-posts/0023-doctor-sleep.lt3 +43 -0
  123. data/doc/old-posts/0024-just-a-test.lt3 +12 -0
  124. data/doc/old-posts/0025-trying-another-post.lt3 +12 -0
  125. data/doc/old-repo +1 -0
  126. data/doc/reddit_integration.md +2 -2
  127. data/doc/user.lt3 +0 -3
  128. data/lib/scriptorium/api.rb +1811 -78
  129. data/lib/scriptorium/banner_svg.rb +55 -68
  130. data/lib/scriptorium/contract.rb +3 -2
  131. data/lib/scriptorium/exceptions.rb +133 -102
  132. data/lib/scriptorium/helpers.rb +282 -82
  133. data/lib/scriptorium/post.rb +81 -17
  134. data/lib/scriptorium/reddit.rb +1 -1
  135. data/lib/scriptorium/repo.rb +478 -164
  136. data/lib/scriptorium/standard_files.rb +30 -396
  137. data/lib/scriptorium/support/common_js/clipboard.js +35 -0
  138. data/lib/scriptorium/support/common_js/content-loader.js +187 -0
  139. data/lib/scriptorium/support/common_js/navigation.js +52 -0
  140. data/lib/scriptorium/support/common_js/syntax-highlighting.js +27 -0
  141. data/lib/scriptorium/support/config/reddit_template.txt +17 -0
  142. data/{test/scriptorium-TEST-1754622690-146/views/sample → lib/scriptorium/support}/config/social.txt +1 -0
  143. data/lib/scriptorium/support/highlight/css.txt +2 -0
  144. data/lib/scriptorium/support/highlight/custom.css +119 -0
  145. data/lib/scriptorium/support/highlight/js.txt +1 -0
  146. data/lib/scriptorium/support/post_index/config.txt +15 -0
  147. data/lib/scriptorium/support/post_index/style.css +55 -0
  148. data/lib/scriptorium/support/templates/index_entry.lt3 +16 -0
  149. data/{test/scriptorium-TEST-1754622690-146/themes/standard/initial/post.lt3 → lib/scriptorium/support/templates/initial_post.lt3} +5 -5
  150. data/lib/scriptorium/support/templates/post.lt3 +104 -0
  151. data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/header.txt → lib/scriptorium/support/theme/header.lt3} +1 -1
  152. data/lib/scriptorium/theme.rb +83 -70
  153. data/lib/scriptorium/version.rb +2 -2
  154. data/lib/scriptorium/view.rb +194 -149
  155. data/lib/scriptorium.rb +24 -1
  156. data/lib/skeleton.rb +4 -1
  157. data/scriptorium.gemspec +2 -1
  158. data/test/WEB_INTEGRATION_README.md +196 -0
  159. data/test/all +40 -0
  160. data/test/banner_svg/unit.rb +267 -35
  161. data/test/config/deployment.txt +5 -0
  162. data/test/integration/integration_test.rb +7 -7
  163. data/test/integration/preview_flow_test.rb +94 -0
  164. data/test/livetext_plugin_test.rb +453 -182
  165. data/test/manual/banner-tests/test01.html +82 -18
  166. data/test/manual/banner-tests/test02.html +82 -18
  167. data/test/manual/banner-tests/test03.html +82 -18
  168. data/test/manual/banner-tests/test04.html +89 -25
  169. data/test/manual/banner-tests/test05.html +89 -25
  170. data/test/manual/banner-tests/test06.html +89 -25
  171. data/test/manual/banner-tests/test07.html +89 -25
  172. data/test/manual/banner-tests/test08.html +82 -18
  173. data/test/manual/banner-tests/test09.html +82 -18
  174. data/test/manual/banner-tests/test10.html +82 -18
  175. data/test/manual/banner-tests/test11.html +82 -18
  176. data/test/manual/banner-tests/test12.html +82 -18
  177. data/test/manual/banner-tests/test13.html +82 -18
  178. data/test/manual/banner-tests/test14.html +82 -18
  179. data/test/manual/banner-tests/test15.html +82 -18
  180. data/test/manual/banner-tests/test16.html +82 -18
  181. data/test/manual/banner-tests/test17.html +82 -18
  182. data/test/manual/banner-tests/test18.html +90 -26
  183. data/test/manual/banner-tests/test19.html +90 -26
  184. data/test/manual/banner-tests/test20.html +90 -26
  185. data/test/manual/banner-tests/test21.html +90 -26
  186. data/test/manual/banner-tests/test22.html +90 -26
  187. data/test/manual/banner-tests/test23.html +90 -26
  188. data/test/manual/banner-tests/test24.html +90 -26
  189. data/test/manual/banner-tests/test25.html +89 -25
  190. data/test/manual/banner_environment.rb +15 -2
  191. data/test/manual/codemirror_demo.html +773 -0
  192. data/test/manual/create_posts_for_web.rb +114 -0
  193. data/test/manual/preview_manual_test.rb +129 -0
  194. data/test/manual/test_banner_features.rb +14 -14
  195. data/test/manual/test_banner_integration.rb +115 -0
  196. data/test/manual/test_banner_radial.rb +87 -0
  197. data/test/manual/test_syntax_highlighting.rb +60 -40
  198. data/test/support/preview_utils.rb +88 -0
  199. data/test/test_gem_assets.rb +48 -0
  200. data/test/test_helpers.rb +10 -0
  201. data/test/tui_editor_integration_test.rb +15 -15
  202. data/test/tui_integration_test.rb +687 -441
  203. data/test/unit/api.rb +757 -37
  204. data/test/unit/asset_management.rb +195 -221
  205. data/test/unit/backup_test.rb +451 -0
  206. data/test/unit/contract_test.rb +1 -23
  207. data/test/unit/core.rb +415 -61
  208. data/test/unit/deploy_config_test.rb +248 -0
  209. data/test/unit/deploy_test.rb +312 -21
  210. data/test/unit/edit_post_test.rb +168 -0
  211. data/test/unit/gem_asset_management.rb +36 -42
  212. data/test/unit/livetext_basic.rb +23 -35
  213. data/test/unit/livetext_compatibility.rb +7 -14
  214. data/test/unit/parse_cmd_test.rb +260 -0
  215. data/test/unit/{symlink_test.rb → permalink_copy_test.rb} +47 -49
  216. data/test/unit/post.rb +91 -26
  217. data/test/unit/post_index_config_test.rb +258 -0
  218. data/test/unit/post_state_helpers_test.rb +137 -0
  219. data/test/unit/read_commented_file_test.rb +8 -6
  220. data/test/unit/repo.rb +75 -54
  221. data/test/unit/social_test.rb +41 -44
  222. data/test/unit/syntax_highlighting.rb +70 -0
  223. data/test/unit/theme_management_test.rb +91 -0
  224. data/test/unit/view.rb +79 -12
  225. data/test/unit/widgets.rb +8 -8
  226. data/test/web_integration_test.rb +231 -0
  227. data/test/web_test_helper.rb +218 -0
  228. data/test/web_workflow_test.rb +527 -0
  229. data/ui/tui/bin/scriptorium +885 -415
  230. data/ui/web/app/app.rb +1398 -176
  231. data/ui/web/app/assets/livetext_mode.js +244 -0
  232. data/ui/web/app/error_helpers.rb +16 -16
  233. data/ui/web/app/views/advanced_config.erb +8 -2
  234. data/ui/web/app/views/asset_management.erb +56 -0
  235. data/ui/web/app/views/backup_management.erb +238 -0
  236. data/ui/web/app/views/config_widget.erb +232 -0
  237. data/ui/web/app/views/dashboard.erb +64 -72
  238. data/ui/web/app/views/deploy_config.erb +3 -0
  239. data/ui/web/app/views/edit_pages.erb +170 -2
  240. data/ui/web/app/views/edit_post.erb +130 -9
  241. data/ui/web/app/views/edit_theme.erb +73 -0
  242. data/ui/web/app/views/edit_theme_file.erb +74 -0
  243. data/ui/web/app/views/theme_management.erb +130 -0
  244. data/ui/web/app/views/view_dashboard.erb +666 -25
  245. data/ui/web/app/views/widgets.erb +249 -0
  246. data/ui/web/bin/scriptorium-web +35 -24
  247. data/ui/web/tmp/timing.log +17 -0
  248. data/ui/web/tmp/web_server.log +0 -5
  249. metadata +190 -116
  250. data/assets/back-icon.png +0 -0
  251. data/assets/icons/facebook.svg +0 -1
  252. data/assets/icons/github.svg +0 -1
  253. data/assets/icons/instagram.svg +0 -1
  254. data/assets/icons/reddit.svg +0 -1
  255. data/assets/icons/x.svg +0 -1
  256. data/assets/icons/youtube.svg +0 -1
  257. data/bin/scriptorium +0 -1511
  258. data/doc/anti-amnesia/20250727-060000-api-design-tui-planning.md +0 -34
  259. data/doc/anti-amnesia/20250727-061000-runeblog-tui-analysis.md +0 -50
  260. data/doc/anti-amnesia/20250727-154000-livetext-plugin-file-stats.md +0 -73
  261. data/doc/anti-amnesia/20250727-172600-unified-minitest-framework.md +0 -70
  262. data/doc/anti-amnesia/20250727-173000-widget-testing-achievement.md +0 -110
  263. data/doc/anti-amnesia/20250727-180000-post-id-num-refactoring.md +0 -73
  264. data/doc/anti-amnesia/20250728-124421-conversation-summary-concise.md +0 -124
  265. data/doc/anti-amnesia/20250729-190000-scriptorium-tui-testing-complete.md +0 -46
  266. data/doc/anti-amnesia/20250729-200000-scriptorium-tui-testing-edit-file-workflow.md +0 -97
  267. data/doc/anti-amnesia/20250729-211500-dependency-management-system.md +0 -211
  268. data/doc/anti-amnesia/20250729-213000-python-virtual-environment-setup.md +0 -141
  269. data/doc/anti-amnesia/20250729-214500-theme-management-commands.md +0 -211
  270. data/doc/anti-amnesia/20250729-215000-version-update-to-0.6.0.md +0 -134
  271. data/doc/anti-amnesia/20250729-220000-user-guide-complete.md +0 -41
  272. data/doc/anti-amnesia/20250804-213700-publishing-test-fix.md +0 -49
  273. data/doc/anti-amnesia/20250804-214400-additional-test-fixes.md +0 -46
  274. data/doc/anti-amnesia/20250804-220000-asset-function-logic-clarification.md +0 -41
  275. data/doc/anti-amnesia/20250806-202032-asset-function-logic-clarification.md +0 -41
  276. data/doc/anti-amnesia/20250813-082428-syntax-highlighting-and-navigation-improvements.md +0 -256
  277. data/lib/scriptorium/syntax_highlighter.rb +0 -234
  278. data/test/manual/deploy_symlink_demo.rb +0 -142
  279. data/test/manual/symlink_demo.rb +0 -117
  280. data/test/manual/test2.rb +0 -12
  281. data/test/manual/test_banner_from_file.rb +0 -150
  282. data/test/manual/test_banner_in_header.rb +0 -35
  283. data/test/manual/test_code_highlighting.rb +0 -68
  284. data/test/manual/test_complex_header.rb +0 -74
  285. data/test/manual/test_empty_header.rb +0 -32
  286. data/test/manual/test_radial_custom.rb +0 -58
  287. data/test/manual/test_radial_large_radius.rb +0 -52
  288. data/test/manual/test_svg_debug.rb +0 -47
  289. data/test/pages-demo/config/currentview.txt +0 -1
  290. data/test/pages-demo/views/demo/config/common.js +0 -57
  291. data/test/pages-demo/views/demo/config/footer.txt +0 -1
  292. data/test/pages-demo/views/demo/config/global-head.txt +0 -8
  293. data/test/pages-demo/views/demo/config/header.txt +0 -1
  294. data/test/pages-demo/views/demo/config/layout.txt +0 -1
  295. data/test/pages-demo/views/demo/config/left.txt +0 -1
  296. data/test/pages-demo/views/demo/config/main.txt +0 -1
  297. data/test/pages-demo/views/demo/config/right.txt +0 -1
  298. data/test/pages-demo/views/demo/config.txt +0 -3
  299. data/test/pages-demo/views/demo/output/panes/footer.html +0 -1
  300. data/test/pages-demo/views/demo/output/panes/header.html +0 -1
  301. data/test/pages-demo/views/demo/output/panes/left.html +0 -1
  302. data/test/pages-demo/views/demo/output/panes/main.html +0 -1
  303. data/test/pages-demo/views/demo/output/panes/right.html +0 -1
  304. data/test/scriptorium-TEST-1754622690-146/config/bootstrap_css.txt +0 -5
  305. data/test/scriptorium-TEST-1754622690-146/config/bootstrap_js.txt +0 -4
  306. data/test/scriptorium-TEST-1754622690-146/config/common.js +0 -57
  307. data/test/scriptorium-TEST-1754622690-146/config/currentview.txt +0 -1
  308. data/test/scriptorium-TEST-1754622690-146/config/global-head.txt +0 -9
  309. data/test/scriptorium-TEST-1754622690-146/config/last_post_num.txt +0 -1
  310. data/test/scriptorium-TEST-1754622690-146/config/os_helpers.rb +0 -4
  311. data/test/scriptorium-TEST-1754622690-146/config/widgets.txt +0 -3
  312. data/test/scriptorium-TEST-1754622690-146/posts/0001/meta.txt +0 -8
  313. data/test/scriptorium-TEST-1754622690-146/posts/0001/source.lt3 +0 -6
  314. data/test/scriptorium-TEST-1754622690-146/themes/standard/README.txt +0 -1
  315. data/test/scriptorium-TEST-1754622690-146/themes/standard/config.txt +0 -1
  316. data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/gen/text.css +0 -1
  317. data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index.lt3 +0 -1
  318. data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index_entry.lt3 +0 -14
  319. data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/post.lt3 +0 -13
  320. data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/widget.lt3 +0 -1
  321. data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_css.txt +0 -5
  322. data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_js.txt +0 -4
  323. data/test/scriptorium-TEST-1754622690-146/views/sample/config/common.js +0 -57
  324. data/test/scriptorium-TEST-1754622690-146/views/sample/config/deploy.txt +0 -5
  325. data/test/scriptorium-TEST-1754622690-146/views/sample/config/footer.txt +0 -2
  326. data/test/scriptorium-TEST-1754622690-146/views/sample/config/global-head.txt +0 -9
  327. data/test/scriptorium-TEST-1754622690-146/views/sample/config/header.txt +0 -4
  328. data/test/scriptorium-TEST-1754622690-146/views/sample/config/layout.txt +0 -5
  329. data/test/scriptorium-TEST-1754622690-146/views/sample/config/left.txt +0 -3
  330. data/test/scriptorium-TEST-1754622690-146/views/sample/config/main.txt +0 -5
  331. data/test/scriptorium-TEST-1754622690-146/views/sample/config/right.txt +0 -3
  332. data/test/scriptorium-TEST-1754622690-146/views/sample/config/status.txt +0 -7
  333. data/test/scriptorium-TEST-1754622690-146/views/sample/config.txt +0 -3
  334. data/test/scriptorium-TEST-1754622690-146/views/sample/layout/footer.html +0 -3
  335. data/test/scriptorium-TEST-1754622690-146/views/sample/layout/header.html +0 -3
  336. data/test/scriptorium-TEST-1754622690-146/views/sample/layout/left.html +0 -3
  337. data/test/scriptorium-TEST-1754622690-146/views/sample/layout/main.html +0 -3
  338. data/test/scriptorium-TEST-1754622690-146/views/sample/layout/right.html +0 -3
  339. data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/footer.html +0 -1
  340. data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/header.html +0 -1
  341. data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/left.html +0 -1
  342. data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/main.html +0 -1
  343. data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/right.html +0 -1
  344. data/ui/web/tmp/web_server.pid +0 -1
  345. /data/{test/pages-demo/views/demo/config/bootstrap_css.txt → lib/scriptorium/support/bootstrap/css.txt} +0 -0
  346. /data/{test/pages-demo/views/demo/config/bootstrap_js.txt → lib/scriptorium/support/bootstrap/js.txt} +0 -0
  347. /data/{test/scriptorium-TEST-1754622690-146/views/sample → lib/scriptorium/support}/config/reddit.txt +0 -0
  348. /data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout → lib/scriptorium/support/templates}/layout.txt +0 -0
  349. /data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/footer.txt → lib/scriptorium/support/theme/footer.lt3} +0 -0
  350. /data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/left.txt → lib/scriptorium/support/theme/left.lt3} +0 -0
  351. /data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/main.txt → lib/scriptorium/support/theme/main.lt3} +0 -0
  352. /data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/right.txt → lib/scriptorium/support/theme/right.lt3} +0 -0
  353. /data/test/manual/banner-tests/{config.txt → svg.txt} +0 -0
  354. /data/test/manual/{test6.rb → test_advanced_widgets.rb} +0 -0
  355. /data/test/manual/{test1.rb → test_basic_posts.rb} +0 -0
  356. /data/test/manual/{test4.rb → test_layout_widgets.rb} +0 -0
  357. /data/test/manual/{test5.rb → test_pagination.rb} +0 -0
  358. /data/test/manual/{test3.rb → test_random_posts.rb} +0 -0
@@ -0,0 +1,101 @@
1
+ .h1 Custom exceptions via metaprogramming
2
+
3
+ .set post.num = 0019
4
+ .set post.slug = custom-exceptions-via-metaprogramming
5
+ .set post.date = 2020-02-17
6
+ .set post.title = Custom exceptions via metaprogramming
7
+ .set post.tags =
8
+ .set post.views = computing computing
9
+ .set post.published = yes
10
+ .set post.deployed = no
11
+
12
+ Suppose you want a large number of custom exceptions. And suppose you're not afraid of metaprogramming.
13
+ A few months back, I found myself wanting to be "more specific" with the exceptions
14
+ I raised in my ongoing RuneBlog project (which is used to create this blog). I
15
+ wanted to raise specific exceptions with custom parameterized messages (without
16
+ repeating myself too much).
17
+
18
+ Here's an example of the "usual" way to do this:
19
+
20
+ class MyException < StandardError
21
+
22
+ def initialize(file, dir)
23
+ msg = "Could not find #{file} under #{dir}"
24
+ super(msg)
25
+ end
26
+
27
+ end
28
+
29
+ raise MyException.new("stuff.txt", "/home/willard")
30
+
31
+ # Output:
32
+ # exc.rb:10:in `<main>': Could not find stuff.txt under /home/willard (MyException)
33
+
34
+ Now there is nothing particularly wrong with that. But as it happens, I wanted a
35
+ large number of exceptions with fairly descriptive names. I didn't want to type
36
+ (or even paste) this stuff over and over.
37
+
38
+ Here comes the "not afraid of metaprogramming" part. This is what I did:
39
+
40
+ def make_exception(sym, str, target_class = Object)
41
+ return if target_class.constants.include?(sym)
42
+ target_class.const_set(sym, StandardError.dup)
43
+ define_method(sym) do |*args|
44
+ msg = str.dup
45
+ args.each.with_index {|arg, i| msg.sub!("%#{i+1}", arg) }
46
+ target_class.class_eval(sym.to_s).new(msg)
47
+ end
48
+ end
49
+
50
+ Now, what does this do? The method takes two parameters (or three if you count the
51
+ target class which defaults to Object). You specify a symbol (for the
52
+ name of the exception) and a string (for the exception message). It then does
53
+ two things: It creates an exception class (named after the symbol); and it creates
54
+ a method of the same name.
55
+
56
+ Here are examples of calling make_exception:
57
+
58
+ make_exception(:NotImplemented, "Feature not yet implemented")
59
+ make_exception(:CantOpen, "Can't open '%1'")
60
+ make_exception(:InternalError, "Internal error: Method %1 got arg '%2'")
61
+
62
+ And here are examples of raising these exceptions:
63
+
64
+ raise NotImplemented
65
+ raise CantOpen(somefile)
66
+ raise InternalError(__method__, arg)
67
+
68
+ You might ask: Why define a method returning an exception object? The answer
69
+ is that I don't want to write these this way:
70
+
71
+ raise NotImplemented.new("Feature not yet implemented")
72
+ raise CantOpen.new("Can't open '#{somefile}'")
73
+ raise InternalError.new("Internal error: Method #{__method__} got arg '#{arg}'")
74
+
75
+ I perceive four advantages doing it the first way: I don't have to specify the
76
+ message string each time; I still get to have a descriptive, unique class name
77
+ without the message making it seem redundantly; I don't have to interpolate
78
+ values into the message string explicitly; and I don't have to say .new
79
+ every time.
80
+
81
+ Some of you may have two questions: Can you (or should you) really have a
82
+ capitalized method name? Can a method have the same name as a class without
83
+ confusing the interpreter?
84
+
85
+ I'll answer both those questions with an example from the Ruby core: There
86
+ is an Integer class and an Integer method (naturally related to each other).
87
+ Ruby distinguishes between these by context. It's not impossible, and I argue
88
+ it's not a bad practice.
89
+
90
+ As for the parameters, it's intuitive how they work. A % sign signals a
91
+ numbered replaceable piece of text, and these are replaced with the parameters
92
+ specified when the method is called.
93
+
94
+ That part of the code is not really robust, by the way. As it is written now,you could easily confuse it-- make it misbehave or crash. But you get the idea.
95
+
96
+ So far, I have defined 23 custom exceptions in this project. Each definition
97
+ occupies a single line. If I want to change the behavior of all of them in
98
+ some way, I will go and change the make_exception method (which itself is
99
+ only 9 lines).
100
+
101
+ Like it, hate it? Comments welcome.
@@ -0,0 +1,7 @@
1
+ num 0020
2
+ title fffff
3
+ date 2020-01-21
4
+ pubdate 2020-01-21
5
+ views computing computing
6
+ tags
7
+ pinned
@@ -0,0 +1,24 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>fffff</title>
6
+ <meta name="generator" content="Scriptorium Import">
7
+ <meta property="og:title" content="fffff">
8
+ <meta property="og:locale" content="en_US">
9
+ <meta property="og:type" content="article">
10
+ <meta property="article:published_time" content="2020-01-21">
11
+ </head>
12
+ <body>
13
+ <article>
14
+ <header>
15
+ <h1>fffff</h1>
16
+ <time datetime="2020-01-21">January 21, 2020</time>
17
+ </header>
18
+
19
+ <div class="content">
20
+ <p>
21
+ </div>
22
+ </article>
23
+ </body>
24
+ </html>
@@ -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
+