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.
- checksums.yaml +4 -4
- data/assets/icons/social/reddit.png +0 -0
- data/assets/icons/social/x-logo.png +0 -0
- data/assets/imagenotfound.jpg +0 -0
- data/bin/sblog +84 -5
- data/bin/scriptorium +1 -0
- data/doc/anti-amnesia/20250727-054000-scriptorium-overview.md +0 -1
- data/doc/anti-amnesia/20250727-123000-anti-amnesia-conventions.md +0 -29
- data/doc/anti-amnesia/20250727-172600-cursor-rbenv-ruby-version-mystery.md +0 -19
- data/doc/anti-amnesia/20250727-172900-ai-cognitive-assessment-capabilities.md +1 -1
- data/doc/anti-amnesia/20250728-124243-aaa-syntax-clarification.md +1 -1
- data/doc/anti-amnesia/20250729-210000-reddit-autopost-integration-complete.md +1 -1
- data/doc/anti-amnesia/20250804-190500-cognitive-loop-bug.md +0 -10
- data/doc/anti-amnesia/20250804-190700-anti-amnesia-timestamping-fix.md +1 -4
- data/doc/anti-amnesia/20250901-211714-codemirror-integration-and-web-tests.md +172 -0
- data/doc/anti-amnesia/20250902-002402-backup-restore-system.md +126 -0
- data/doc/anti-amnesia/20250907-203339-backup-metadata-implementation.md +66 -0
- data/doc/imported/0001-elixir-conf-2014/metadata.txt +7 -0
- data/doc/imported/0001-elixir-conf-2014/post.html +37 -0
- data/doc/imported/0001-elixir-conf-2014/source.lt3 +22 -0
- data/doc/imported/0002-programmers-and-word-processing/metadata.txt +7 -0
- data/doc/imported/0002-programmers-and-word-processing/post.html +192 -0
- data/doc/imported/0002-programmers-and-word-processing/source.lt3 +146 -0
- data/doc/imported/0003-how-to-turn-your-brain-sideways/metadata.txt +7 -0
- data/doc/imported/0003-how-to-turn-your-brain-sideways/post.html +60 -0
- data/doc/imported/0003-how-to-turn-your-brain-sideways/source.lt3 +40 -0
- data/doc/imported/0004-upcoming-lone-star-ruby-conference/metadata.txt +7 -0
- data/doc/imported/0004-upcoming-lone-star-ruby-conference/post.html +42 -0
- data/doc/imported/0004-upcoming-lone-star-ruby-conference/source.lt3 +24 -0
- data/doc/imported/0005-elixir-conf-2015-announced/metadata.txt +7 -0
- data/doc/imported/0005-elixir-conf-2015-announced/post.html +30 -0
- data/doc/imported/0005-elixir-conf-2015-announced/source.lt3 +16 -0
- data/doc/imported/0006-ruby-for-dinosaurs/metadata.txt +7 -0
- data/doc/imported/0006-ruby-for-dinosaurs/post.html +43 -0
- data/doc/imported/0006-ruby-for-dinosaurs/source.lt3 +27 -0
- data/doc/imported/0007-phoenix-isnt-rails/metadata.txt +7 -0
- data/doc/imported/0007-phoenix-isnt-rails/post.html +116 -0
- data/doc/imported/0007-phoenix-isnt-rails/source.lt3 +87 -0
- data/doc/imported/0008-concerning-the-term-monkeypatching/metadata.txt +7 -0
- data/doc/imported/0008-concerning-the-term-monkeypatching/post.html +129 -0
- data/doc/imported/0008-concerning-the-term-monkeypatching/source.lt3 +92 -0
- data/doc/imported/0009-announcement-coming-soon/metadata.txt +7 -0
- data/doc/imported/0009-announcement-coming-soon/post.html +33 -0
- data/doc/imported/0009-announcement-coming-soon/source.lt3 +19 -0
- data/doc/imported/0010-immutable-data-ditching-the-wax-tablet/metadata.txt +7 -0
- data/doc/imported/0010-immutable-data-ditching-the-wax-tablet/post.html +175 -0
- data/doc/imported/0010-immutable-data-ditching-the-wax-tablet/source.lt3 +139 -0
- data/doc/imported/0011-computer-science-as-a-lost-art/metadata.txt +7 -0
- data/doc/imported/0011-computer-science-as-a-lost-art/post.html +139 -0
- data/doc/imported/0011-computer-science-as-a-lost-art/source.lt3 +104 -0
- data/doc/imported/0012-ruby-day-in-turin-italy/metadata.txt +7 -0
- data/doc/imported/0012-ruby-day-in-turin-italy/post.html +42 -0
- data/doc/imported/0012-ruby-day-in-turin-italy/source.lt3 +24 -0
- data/doc/imported/0013-rubyday-was-a-success/metadata.txt +7 -0
- data/doc/imported/0013-rubyday-was-a-success/post.html +44 -0
- data/doc/imported/0013-rubyday-was-a-success/source.lt3 +27 -0
- data/doc/imported/0014-working-on-the-blogging-software/metadata.txt +7 -0
- data/doc/imported/0014-working-on-the-blogging-software/post.html +63 -0
- data/doc/imported/0014-working-on-the-blogging-software/source.lt3 +41 -0
- data/doc/imported/0015-ok-its-not-really-a-lost-art/metadata.txt +7 -0
- data/doc/imported/0015-ok-its-not-really-a-lost-art/post.html +172 -0
- data/doc/imported/0015-ok-its-not-really-a-lost-art/source.lt3 +134 -0
- data/doc/imported/0016-an-in-operator-for-ruby/metadata.txt +7 -0
- data/doc/imported/0016-an-in-operator-for-ruby/post.html +155 -0
- data/doc/imported/0016-an-in-operator-for-ruby/source.lt3 +106 -0
- data/doc/imported/0017-the-forgotten-mathematician/metadata.txt +7 -0
- data/doc/imported/0017-the-forgotten-mathematician/post.html +161 -0
- data/doc/imported/0017-the-forgotten-mathematician/source.lt3 +119 -0
- data/doc/imported/0018-ruby-puns/metadata.txt +7 -0
- data/doc/imported/0018-ruby-puns/post.html +46 -0
- data/doc/imported/0018-ruby-puns/source.lt3 +28 -0
- data/doc/imported/0019-custom-exceptions-via-metaprogramming/metadata.txt +7 -0
- data/doc/imported/0019-custom-exceptions-via-metaprogramming/post.html +138 -0
- data/doc/imported/0019-custom-exceptions-via-metaprogramming/source.lt3 +101 -0
- data/doc/imported/0020-fffff/metadata.txt +7 -0
- data/doc/imported/0020-fffff/post.html +24 -0
- data/doc/imported/0020-fffff/source.lt3 +12 -0
- data/doc/imported/0021-trying-ror-yet-again/metadata.txt +7 -0
- data/doc/imported/0021-trying-ror-yet-again/post.html +26 -0
- data/doc/imported/0021-trying-ror-yet-again/source.lt3 +12 -0
- data/doc/imported/0023-doctor-sleep/metadata.txt +7 -0
- data/doc/imported/0023-doctor-sleep/post.html +63 -0
- data/doc/imported/0023-doctor-sleep/source.lt3 +44 -0
- data/doc/imported/0024-just-a-test/metadata.txt +7 -0
- data/doc/imported/0024-just-a-test/post.html +24 -0
- data/doc/imported/0024-just-a-test/source.lt3 +12 -0
- data/doc/imported/import_summary.txt +98 -0
- data/doc/livetext-informal-spec.txt +65 -0
- data/doc/myuserdoc/ch-0.lt3 +31 -0
- data/doc/myuserdoc/ch-1.lt3 +37 -0
- data/doc/myuserdoc/ch-10.lt3 +22 -0
- data/doc/myuserdoc/ch-2.lt3 +37 -0
- data/doc/myuserdoc/ch-3.lt3 +19 -0
- data/doc/myuserdoc/ch-4.lt3 +43 -0
- data/doc/myuserdoc/ch-5.lt3 +22 -0
- data/doc/myuserdoc/ch-6.lt3 +19 -0
- data/doc/myuserdoc/ch-7.lt3 +16 -0
- data/doc/myuserdoc/ch-8.lt3 +13 -0
- data/doc/myuserdoc/ch-9.lt3 +19 -0
- data/doc/myuserdoc/tweak.rb +18 -0
- data/doc/{userdoc-toc.txt → myuserdoc/userdoc-toc.txt} +27 -27
- data/doc/old-posts/0001-elixir-conf-2014.lt3 +24 -0
- data/doc/old-posts/0002-programmers-and-word-processing.lt3 +150 -0
- data/doc/old-posts/0003-how-to-turn-your-brain-sideways.lt3 +43 -0
- data/doc/old-posts/0004-upcoming-lone-star-ruby-conference.lt3 +26 -0
- data/doc/old-posts/0005-elixir-conf-2015-announced.lt3 +17 -0
- data/doc/old-posts/0006-ruby-for-dinosaurs.lt3 +30 -0
- data/doc/old-posts/0007-phoenix-isnt-rails.lt3 +90 -0
- data/doc/old-posts/0008-concerning-the-term-monkeypatching.lt3 +105 -0
- data/doc/old-posts/0009-announcement-coming-soon.lt3 +20 -0
- data/doc/old-posts/0010-immutable-data-ditching-the-wax-tablet.lt3 +142 -0
- data/doc/old-posts/0011-computer-science-as-a-lost-art.lt3 +117 -0
- data/doc/old-posts/0012-ruby-day-in-turin-italy.lt3 +26 -0
- data/doc/old-posts/0013-rubyday-was-a-success.lt3 +28 -0
- data/doc/old-posts/0014-working-on-the-blogging-software.lt3 +42 -0
- data/doc/old-posts/0015-ok-its-not-really-a-lost-art.lt3 +137 -0
- data/doc/old-posts/0016-an-in-operator-for-ruby.lt3 +142 -0
- data/doc/old-posts/0017-the-forgotten-mathematician.lt3 +129 -0
- data/doc/old-posts/0018-ruby-puns.lt3 +31 -0
- data/doc/old-posts/0019-custom-exceptions-via-metaprogramming.lt3 +116 -0
- data/doc/old-posts/0021-trying-ror-yet-again.lt3 +35 -0
- data/doc/old-posts/0023-doctor-sleep.lt3 +43 -0
- data/doc/old-posts/0024-just-a-test.lt3 +12 -0
- data/doc/old-posts/0025-trying-another-post.lt3 +12 -0
- data/doc/old-repo +1 -0
- data/doc/reddit_integration.md +2 -2
- data/doc/user.lt3 +0 -3
- data/lib/scriptorium/api.rb +1811 -78
- data/lib/scriptorium/banner_svg.rb +55 -68
- data/lib/scriptorium/contract.rb +3 -2
- data/lib/scriptorium/exceptions.rb +133 -102
- data/lib/scriptorium/helpers.rb +282 -82
- data/lib/scriptorium/post.rb +81 -17
- data/lib/scriptorium/reddit.rb +1 -1
- data/lib/scriptorium/repo.rb +478 -164
- data/lib/scriptorium/standard_files.rb +30 -396
- data/lib/scriptorium/support/common_js/clipboard.js +35 -0
- data/lib/scriptorium/support/common_js/content-loader.js +187 -0
- data/lib/scriptorium/support/common_js/navigation.js +52 -0
- data/lib/scriptorium/support/common_js/syntax-highlighting.js +27 -0
- data/lib/scriptorium/support/config/reddit_template.txt +17 -0
- data/{test/scriptorium-TEST-1754622690-146/views/sample → lib/scriptorium/support}/config/social.txt +1 -0
- data/lib/scriptorium/support/highlight/css.txt +2 -0
- data/lib/scriptorium/support/highlight/custom.css +119 -0
- data/lib/scriptorium/support/highlight/js.txt +1 -0
- data/lib/scriptorium/support/post_index/config.txt +15 -0
- data/lib/scriptorium/support/post_index/style.css +55 -0
- data/lib/scriptorium/support/templates/index_entry.lt3 +16 -0
- data/{test/scriptorium-TEST-1754622690-146/themes/standard/initial/post.lt3 → lib/scriptorium/support/templates/initial_post.lt3} +5 -5
- data/lib/scriptorium/support/templates/post.lt3 +104 -0
- data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/header.txt → lib/scriptorium/support/theme/header.lt3} +1 -1
- data/lib/scriptorium/theme.rb +83 -70
- data/lib/scriptorium/version.rb +2 -2
- data/lib/scriptorium/view.rb +194 -149
- data/lib/scriptorium.rb +24 -1
- data/lib/skeleton.rb +4 -1
- data/scriptorium.gemspec +2 -1
- data/test/WEB_INTEGRATION_README.md +196 -0
- data/test/all +40 -0
- data/test/banner_svg/unit.rb +267 -35
- data/test/config/deployment.txt +5 -0
- data/test/integration/integration_test.rb +7 -7
- data/test/integration/preview_flow_test.rb +94 -0
- data/test/livetext_plugin_test.rb +453 -182
- data/test/manual/banner-tests/test01.html +82 -18
- data/test/manual/banner-tests/test02.html +82 -18
- data/test/manual/banner-tests/test03.html +82 -18
- data/test/manual/banner-tests/test04.html +89 -25
- data/test/manual/banner-tests/test05.html +89 -25
- data/test/manual/banner-tests/test06.html +89 -25
- data/test/manual/banner-tests/test07.html +89 -25
- data/test/manual/banner-tests/test08.html +82 -18
- data/test/manual/banner-tests/test09.html +82 -18
- data/test/manual/banner-tests/test10.html +82 -18
- data/test/manual/banner-tests/test11.html +82 -18
- data/test/manual/banner-tests/test12.html +82 -18
- data/test/manual/banner-tests/test13.html +82 -18
- data/test/manual/banner-tests/test14.html +82 -18
- data/test/manual/banner-tests/test15.html +82 -18
- data/test/manual/banner-tests/test16.html +82 -18
- data/test/manual/banner-tests/test17.html +82 -18
- data/test/manual/banner-tests/test18.html +90 -26
- data/test/manual/banner-tests/test19.html +90 -26
- data/test/manual/banner-tests/test20.html +90 -26
- data/test/manual/banner-tests/test21.html +90 -26
- data/test/manual/banner-tests/test22.html +90 -26
- data/test/manual/banner-tests/test23.html +90 -26
- data/test/manual/banner-tests/test24.html +90 -26
- data/test/manual/banner-tests/test25.html +89 -25
- data/test/manual/banner_environment.rb +15 -2
- data/test/manual/codemirror_demo.html +773 -0
- data/test/manual/create_posts_for_web.rb +114 -0
- data/test/manual/preview_manual_test.rb +129 -0
- data/test/manual/test_banner_features.rb +14 -14
- data/test/manual/test_banner_integration.rb +115 -0
- data/test/manual/test_banner_radial.rb +87 -0
- data/test/manual/test_syntax_highlighting.rb +60 -40
- data/test/support/preview_utils.rb +88 -0
- data/test/test_gem_assets.rb +48 -0
- data/test/test_helpers.rb +10 -0
- data/test/tui_editor_integration_test.rb +15 -15
- data/test/tui_integration_test.rb +687 -441
- data/test/unit/api.rb +757 -37
- data/test/unit/asset_management.rb +195 -221
- data/test/unit/backup_test.rb +451 -0
- data/test/unit/contract_test.rb +1 -23
- data/test/unit/core.rb +415 -61
- data/test/unit/deploy_config_test.rb +248 -0
- data/test/unit/deploy_test.rb +312 -21
- data/test/unit/edit_post_test.rb +168 -0
- data/test/unit/gem_asset_management.rb +36 -42
- data/test/unit/livetext_basic.rb +23 -35
- data/test/unit/livetext_compatibility.rb +7 -14
- data/test/unit/parse_cmd_test.rb +260 -0
- data/test/unit/{symlink_test.rb → permalink_copy_test.rb} +47 -49
- data/test/unit/post.rb +91 -26
- data/test/unit/post_index_config_test.rb +258 -0
- data/test/unit/post_state_helpers_test.rb +137 -0
- data/test/unit/read_commented_file_test.rb +8 -6
- data/test/unit/repo.rb +75 -54
- data/test/unit/social_test.rb +41 -44
- data/test/unit/syntax_highlighting.rb +70 -0
- data/test/unit/theme_management_test.rb +91 -0
- data/test/unit/view.rb +79 -12
- data/test/unit/widgets.rb +8 -8
- data/test/web_integration_test.rb +231 -0
- data/test/web_test_helper.rb +218 -0
- data/test/web_workflow_test.rb +527 -0
- data/ui/tui/bin/scriptorium +885 -415
- data/ui/web/app/app.rb +1398 -176
- data/ui/web/app/assets/livetext_mode.js +244 -0
- data/ui/web/app/error_helpers.rb +16 -16
- data/ui/web/app/views/advanced_config.erb +8 -2
- data/ui/web/app/views/asset_management.erb +56 -0
- data/ui/web/app/views/backup_management.erb +238 -0
- data/ui/web/app/views/config_widget.erb +232 -0
- data/ui/web/app/views/dashboard.erb +64 -72
- data/ui/web/app/views/deploy_config.erb +3 -0
- data/ui/web/app/views/edit_pages.erb +170 -2
- data/ui/web/app/views/edit_post.erb +130 -9
- data/ui/web/app/views/edit_theme.erb +73 -0
- data/ui/web/app/views/edit_theme_file.erb +74 -0
- data/ui/web/app/views/theme_management.erb +130 -0
- data/ui/web/app/views/view_dashboard.erb +666 -25
- data/ui/web/app/views/widgets.erb +249 -0
- data/ui/web/bin/scriptorium-web +35 -24
- data/ui/web/tmp/timing.log +17 -0
- data/ui/web/tmp/web_server.log +0 -5
- metadata +190 -116
- data/assets/back-icon.png +0 -0
- data/assets/icons/facebook.svg +0 -1
- data/assets/icons/github.svg +0 -1
- data/assets/icons/instagram.svg +0 -1
- data/assets/icons/reddit.svg +0 -1
- data/assets/icons/x.svg +0 -1
- data/assets/icons/youtube.svg +0 -1
- data/bin/scriptorium +0 -1511
- data/doc/anti-amnesia/20250727-060000-api-design-tui-planning.md +0 -34
- data/doc/anti-amnesia/20250727-061000-runeblog-tui-analysis.md +0 -50
- data/doc/anti-amnesia/20250727-154000-livetext-plugin-file-stats.md +0 -73
- data/doc/anti-amnesia/20250727-172600-unified-minitest-framework.md +0 -70
- data/doc/anti-amnesia/20250727-173000-widget-testing-achievement.md +0 -110
- data/doc/anti-amnesia/20250727-180000-post-id-num-refactoring.md +0 -73
- data/doc/anti-amnesia/20250728-124421-conversation-summary-concise.md +0 -124
- data/doc/anti-amnesia/20250729-190000-scriptorium-tui-testing-complete.md +0 -46
- data/doc/anti-amnesia/20250729-200000-scriptorium-tui-testing-edit-file-workflow.md +0 -97
- data/doc/anti-amnesia/20250729-211500-dependency-management-system.md +0 -211
- data/doc/anti-amnesia/20250729-213000-python-virtual-environment-setup.md +0 -141
- data/doc/anti-amnesia/20250729-214500-theme-management-commands.md +0 -211
- data/doc/anti-amnesia/20250729-215000-version-update-to-0.6.0.md +0 -134
- data/doc/anti-amnesia/20250729-220000-user-guide-complete.md +0 -41
- data/doc/anti-amnesia/20250804-213700-publishing-test-fix.md +0 -49
- data/doc/anti-amnesia/20250804-214400-additional-test-fixes.md +0 -46
- data/doc/anti-amnesia/20250804-220000-asset-function-logic-clarification.md +0 -41
- data/doc/anti-amnesia/20250806-202032-asset-function-logic-clarification.md +0 -41
- data/doc/anti-amnesia/20250813-082428-syntax-highlighting-and-navigation-improvements.md +0 -256
- data/lib/scriptorium/syntax_highlighter.rb +0 -234
- data/test/manual/deploy_symlink_demo.rb +0 -142
- data/test/manual/symlink_demo.rb +0 -117
- data/test/manual/test2.rb +0 -12
- data/test/manual/test_banner_from_file.rb +0 -150
- data/test/manual/test_banner_in_header.rb +0 -35
- data/test/manual/test_code_highlighting.rb +0 -68
- data/test/manual/test_complex_header.rb +0 -74
- data/test/manual/test_empty_header.rb +0 -32
- data/test/manual/test_radial_custom.rb +0 -58
- data/test/manual/test_radial_large_radius.rb +0 -52
- data/test/manual/test_svg_debug.rb +0 -47
- data/test/pages-demo/config/currentview.txt +0 -1
- data/test/pages-demo/views/demo/config/common.js +0 -57
- data/test/pages-demo/views/demo/config/footer.txt +0 -1
- data/test/pages-demo/views/demo/config/global-head.txt +0 -8
- data/test/pages-demo/views/demo/config/header.txt +0 -1
- data/test/pages-demo/views/demo/config/layout.txt +0 -1
- data/test/pages-demo/views/demo/config/left.txt +0 -1
- data/test/pages-demo/views/demo/config/main.txt +0 -1
- data/test/pages-demo/views/demo/config/right.txt +0 -1
- data/test/pages-demo/views/demo/config.txt +0 -3
- data/test/pages-demo/views/demo/output/panes/footer.html +0 -1
- data/test/pages-demo/views/demo/output/panes/header.html +0 -1
- data/test/pages-demo/views/demo/output/panes/left.html +0 -1
- data/test/pages-demo/views/demo/output/panes/main.html +0 -1
- data/test/pages-demo/views/demo/output/panes/right.html +0 -1
- data/test/scriptorium-TEST-1754622690-146/config/bootstrap_css.txt +0 -5
- data/test/scriptorium-TEST-1754622690-146/config/bootstrap_js.txt +0 -4
- data/test/scriptorium-TEST-1754622690-146/config/common.js +0 -57
- data/test/scriptorium-TEST-1754622690-146/config/currentview.txt +0 -1
- data/test/scriptorium-TEST-1754622690-146/config/global-head.txt +0 -9
- data/test/scriptorium-TEST-1754622690-146/config/last_post_num.txt +0 -1
- data/test/scriptorium-TEST-1754622690-146/config/os_helpers.rb +0 -4
- data/test/scriptorium-TEST-1754622690-146/config/widgets.txt +0 -3
- data/test/scriptorium-TEST-1754622690-146/posts/0001/meta.txt +0 -8
- data/test/scriptorium-TEST-1754622690-146/posts/0001/source.lt3 +0 -6
- data/test/scriptorium-TEST-1754622690-146/themes/standard/README.txt +0 -1
- data/test/scriptorium-TEST-1754622690-146/themes/standard/config.txt +0 -1
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/gen/text.css +0 -1
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index.lt3 +0 -1
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index_entry.lt3 +0 -14
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/post.lt3 +0 -13
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/widget.lt3 +0 -1
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_css.txt +0 -5
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_js.txt +0 -4
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/common.js +0 -57
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/deploy.txt +0 -5
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/footer.txt +0 -2
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/global-head.txt +0 -9
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/header.txt +0 -4
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/layout.txt +0 -5
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/left.txt +0 -3
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/main.txt +0 -5
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/right.txt +0 -3
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/status.txt +0 -7
- data/test/scriptorium-TEST-1754622690-146/views/sample/config.txt +0 -3
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/footer.html +0 -3
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/header.html +0 -3
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/left.html +0 -3
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/main.html +0 -3
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/right.html +0 -3
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/footer.html +0 -1
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/header.html +0 -1
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/left.html +0 -1
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/main.html +0 -1
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/right.html +0 -1
- data/ui/web/tmp/web_server.pid +0 -1
- /data/{test/pages-demo/views/demo/config/bootstrap_css.txt → lib/scriptorium/support/bootstrap/css.txt} +0 -0
- /data/{test/pages-demo/views/demo/config/bootstrap_js.txt → lib/scriptorium/support/bootstrap/js.txt} +0 -0
- /data/{test/scriptorium-TEST-1754622690-146/views/sample → lib/scriptorium/support}/config/reddit.txt +0 -0
- /data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout → lib/scriptorium/support/templates}/layout.txt +0 -0
- /data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/footer.txt → lib/scriptorium/support/theme/footer.lt3} +0 -0
- /data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/left.txt → lib/scriptorium/support/theme/left.lt3} +0 -0
- /data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/main.txt → lib/scriptorium/support/theme/main.lt3} +0 -0
- /data/{test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/right.txt → lib/scriptorium/support/theme/right.lt3} +0 -0
- /data/test/manual/banner-tests/{config.txt → svg.txt} +0 -0
- /data/test/manual/{test6.rb → test_advanced_widgets.rb} +0 -0
- /data/test/manual/{test1.rb → test_basic_posts.rb} +0 -0
- /data/test/manual/{test4.rb → test_layout_widgets.rb} +0 -0
- /data/test/manual/{test5.rb → test_pagination.rb} +0 -0
- /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,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,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,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,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
|
+
|