scriptorium 0.0.2 → 0.6.1
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/README.lt3 +324 -0
- data/README.md +3155 -1
- data/assets/.DS_Store +0 -0
- data/assets/README.md +44 -0
- data/assets/back-icon.png +0 -0
- data/assets/icons/facebook.svg +1 -0
- data/assets/icons/github.svg +1 -0
- data/assets/icons/instagram.svg +1 -0
- data/assets/icons/reddit.svg +1 -0
- data/assets/icons/ui/.DS_Store +0 -0
- data/assets/icons/ui/back.png +0 -0
- data/assets/icons/ui/copy.png +0 -0
- data/assets/icons/ui/down.png +0 -0
- data/assets/icons/ui/end.png +0 -0
- data/assets/icons/ui/exit.png +0 -0
- data/assets/icons/ui/foo +10 -0
- data/assets/icons/ui/home.png +0 -0
- data/assets/icons/ui/left.png +0 -0
- data/assets/icons/ui/next.png +0 -0
- data/assets/icons/ui/right.png +0 -0
- data/assets/icons/ui/start.png +0 -0
- data/assets/icons/ui/up.png +0 -0
- data/assets/icons/x.svg +1 -0
- data/assets/icons/youtube.svg +1 -0
- data/assets/samples/placeholder.svg +9 -0
- data/assets/themes/standard/favicon.svg +6 -0
- data/bin/scriptorium +1511 -0
- data/doc/README.txt +6 -0
- data/doc/anti-amnesia/20250727-054000-scriptorium-overview.md +95 -0
- data/doc/anti-amnesia/20250727-060000-api-design-tui-planning.md +34 -0
- data/doc/anti-amnesia/20250727-061000-runeblog-tui-analysis.md +50 -0
- data/doc/anti-amnesia/20250727-123000-anti-amnesia-conventions.md +31 -0
- data/doc/anti-amnesia/20250727-154000-livetext-plugin-file-stats.md +73 -0
- data/doc/anti-amnesia/20250727-172600-cursor-rbenv-ruby-version-mystery.md +64 -0
- data/doc/anti-amnesia/20250727-172600-unified-minitest-framework.md +70 -0
- data/doc/anti-amnesia/20250727-172900-ai-cognitive-assessment-capabilities.md +40 -0
- data/doc/anti-amnesia/20250727-173000-widget-testing-achievement.md +110 -0
- data/doc/anti-amnesia/20250727-180000-post-id-num-refactoring.md +73 -0
- data/doc/anti-amnesia/20250728-124243-aaa-syntax-clarification.md +46 -0
- data/doc/anti-amnesia/20250728-124421-conversation-summary-concise.md +124 -0
- data/doc/anti-amnesia/20250729-190000-scriptorium-tui-testing-complete.md +46 -0
- data/doc/anti-amnesia/20250729-200000-scriptorium-tui-testing-edit-file-workflow.md +97 -0
- data/doc/anti-amnesia/20250729-210000-reddit-autopost-integration-complete.md +158 -0
- data/doc/anti-amnesia/20250729-211500-dependency-management-system.md +211 -0
- data/doc/anti-amnesia/20250729-213000-python-virtual-environment-setup.md +141 -0
- data/doc/anti-amnesia/20250729-214500-theme-management-commands.md +211 -0
- data/doc/anti-amnesia/20250729-215000-version-update-to-0.6.0.md +134 -0
- data/doc/anti-amnesia/20250729-220000-user-guide-complete.md +41 -0
- data/doc/anti-amnesia/20250804-190500-cognitive-loop-bug.md +45 -0
- data/doc/anti-amnesia/20250804-190700-anti-amnesia-timestamping-fix.md +30 -0
- data/doc/anti-amnesia/20250804-213700-publishing-test-fix.md +49 -0
- data/doc/anti-amnesia/20250804-214400-additional-test-fixes.md +46 -0
- data/doc/anti-amnesia/20250804-220000-asset-function-logic-clarification.md +41 -0
- data/doc/anti-amnesia/20250806-202032-asset-function-logic-clarification.md +41 -0
- data/doc/anti-amnesia/20250807-213025.md +116 -0
- data/doc/anti-amnesia/20250813-082428-syntax-highlighting-and-navigation-improvements.md +256 -0
- data/doc/banner_svg_config.md +114 -0
- data/doc/contrib.lt3 +8 -0
- data/doc/dependencies.md +281 -0
- data/doc/hacker.lt3 +5 -0
- data/doc/reddit_credentials_template.json +8 -0
- data/doc/reddit_integration.md +207 -0
- data/doc/user.lt3 +38 -0
- data/doc/user_guide_section_1.md +137 -0
- data/doc/user_guide_section_10.md +515 -0
- data/doc/user_guide_section_11.md +708 -0
- data/doc/user_guide_section_2.md +233 -0
- data/doc/user_guide_section_3.md +5 -0
- data/doc/user_guide_section_4.md +221 -0
- data/doc/user_guide_section_5.md +243 -0
- data/doc/user_guide_section_6.md +147 -0
- data/doc/user_guide_section_7.md +311 -0
- data/doc/user_guide_section_8.md +224 -0
- data/doc/user_guide_section_9.md +375 -0
- data/doc/userdoc-toc.txt +88 -0
- data/lib/rouge/lexers/livetext.rb +74 -0
- data/lib/scriptorium/api.rb +640 -0
- data/lib/scriptorium/banner_svg.rb +742 -0
- data/lib/scriptorium/contract.rb +33 -0
- data/lib/scriptorium/exceptions.rb +174 -0
- data/lib/scriptorium/helpers.rb +475 -0
- data/lib/scriptorium/post.rb +195 -0
- data/lib/scriptorium/reddit.rb +83 -0
- data/lib/scriptorium/repo.rb +624 -0
- data/lib/scriptorium/standard_files.rb +515 -0
- data/lib/scriptorium/syntax_highlighter.rb +234 -0
- data/lib/scriptorium/theme.rb +179 -0
- data/lib/scriptorium/version.rb +2 -2
- data/lib/scriptorium/view.rb +976 -0
- data/lib/scriptorium/widgets/featured_posts.rb +149 -0
- data/lib/scriptorium/widgets/links.rb +112 -0
- data/lib/scriptorium/widgets/pages.rb +133 -0
- data/lib/scriptorium/widgets/widget.rb +133 -0
- data/lib/scriptorium.rb +22 -9
- data/lib/skeleton.rb +11 -2
- data/scriptorium.gemspec +15 -4
- data/test/README.md +69 -0
- data/test/all +43 -0
- data/test/api_demo.rb +99 -0
- data/test/assets/imagenotfound.jpg +0 -0
- data/test/assets/images/.DS_Store +0 -0
- data/test/assets/images/README.md +27 -0
- data/test/assets/images/odd_aspect.png +0 -0
- data/test/assets/images/perfect.png +0 -0
- data/test/assets/images/small.png +0 -0
- data/test/assets/images/tall.png +0 -0
- data/test/assets/images/very_tall.png +0 -0
- data/test/assets/images/very_wide.png +0 -0
- data/test/assets/images/wide.png +0 -0
- data/test/assets/testbanner.jpg +0 -0
- data/test/banner_svg/simple_helpers.rb +13 -0
- data/test/banner_svg/unit.rb +768 -0
- data/test/ed_test.rb +204 -0
- data/test/integration/cursor_banner_combinations.rb +193 -0
- data/test/integration/cursor_banner_features.rb +374 -0
- data/test/integration/integration_test.rb +326 -0
- data/test/livetext_plugin_test.rb +229 -0
- data/test/manual/asset_mgmt.rb +67 -0
- data/test/manual/banner-tests/config.txt +3 -0
- data/test/manual/banner-tests/index.html +45 -0
- data/test/manual/banner-tests/test01.html +58 -0
- data/test/manual/banner-tests/test02.html +58 -0
- data/test/manual/banner-tests/test03.html +58 -0
- data/test/manual/banner-tests/test04.html +65 -0
- data/test/manual/banner-tests/test05.html +65 -0
- data/test/manual/banner-tests/test06.html +65 -0
- data/test/manual/banner-tests/test07.html +65 -0
- data/test/manual/banner-tests/test08.html +59 -0
- data/test/manual/banner-tests/test09.html +59 -0
- data/test/manual/banner-tests/test10.html +59 -0
- data/test/manual/banner-tests/test11.html +59 -0
- data/test/manual/banner-tests/test12.html +59 -0
- data/test/manual/banner-tests/test13.html +59 -0
- data/test/manual/banner-tests/test14.html +59 -0
- data/test/manual/banner-tests/test15.html +58 -0
- data/test/manual/banner-tests/test16.html +58 -0
- data/test/manual/banner-tests/test17.html +58 -0
- data/test/manual/banner-tests/test18.html +68 -0
- data/test/manual/banner-tests/test19.html +68 -0
- data/test/manual/banner-tests/test20.html +68 -0
- data/test/manual/banner-tests/test21.html +68 -0
- data/test/manual/banner-tests/test22.html +68 -0
- data/test/manual/banner-tests/test23.html +68 -0
- data/test/manual/banner-tests/test24.html +68 -0
- data/test/manual/banner-tests/test25.html +67 -0
- data/test/manual/banner_environment.rb +192 -0
- data/test/manual/deploy_symlink_demo.rb +142 -0
- data/test/manual/environment.rb +67 -0
- data/test/manual/make_banner.rb +153 -0
- data/test/manual/sample_banner_config.txt +12 -0
- data/test/manual/symlink_demo.rb +117 -0
- data/test/manual/test1.rb +47 -0
- data/test/manual/test2.rb +12 -0
- data/test/manual/test3.rb +38 -0
- data/test/manual/test4.rb +40 -0
- data/test/manual/test5.rb +24 -0
- data/test/manual/test6.rb +73 -0
- data/test/manual/test_banner_combinations.rb +120 -0
- data/test/manual/test_banner_features.rb +306 -0
- data/test/manual/test_banner_from_file.rb +150 -0
- data/test/manual/test_banner_in_header.rb +35 -0
- data/test/manual/test_code_highlighting.rb +68 -0
- data/test/manual/test_complex_header.rb +74 -0
- data/test/manual/test_empty_header.rb +32 -0
- data/test/manual/test_radial_custom.rb +58 -0
- data/test/manual/test_radial_large_radius.rb +52 -0
- data/test/manual/test_svg_debug.rb +47 -0
- data/test/manual/test_syntax_highlighting.rb +147 -0
- data/test/pages-demo/config/currentview.txt +1 -0
- data/test/pages-demo/views/demo/config/bootstrap_css.txt +5 -0
- data/test/pages-demo/views/demo/config/bootstrap_js.txt +4 -0
- data/test/pages-demo/views/demo/config/common.js +57 -0
- data/test/pages-demo/views/demo/config/footer.txt +1 -0
- data/test/pages-demo/views/demo/config/global-head.txt +8 -0
- data/test/pages-demo/views/demo/config/header.txt +1 -0
- data/test/pages-demo/views/demo/config/layout.txt +1 -0
- data/test/pages-demo/views/demo/config/left.txt +1 -0
- data/test/pages-demo/views/demo/config/main.txt +1 -0
- data/test/pages-demo/views/demo/config/right.txt +1 -0
- data/test/pages-demo/views/demo/config.txt +3 -0
- data/test/pages-demo/views/demo/output/panes/footer.html +1 -0
- data/test/pages-demo/views/demo/output/panes/header.html +1 -0
- data/test/pages-demo/views/demo/output/panes/left.html +1 -0
- data/test/pages-demo/views/demo/output/panes/main.html +1 -0
- data/test/pages-demo/views/demo/output/panes/right.html +1 -0
- data/test/rubytext/rubytext_comprehensive_test.rb +307 -0
- data/test/rubytext/rubytext_demo_test.rb +42 -0
- data/test/rubytext/rubytext_testing_guide.md +277 -0
- data/test/run_automated_tests.rb +45 -0
- data/test/scriptorium-TEST-1754622690-146/config/bootstrap_css.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/config/bootstrap_js.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/config/common.js +57 -0
- data/test/scriptorium-TEST-1754622690-146/config/currentview.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/config/global-head.txt +9 -0
- data/test/scriptorium-TEST-1754622690-146/config/last_post_num.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/config/os_helpers.rb +4 -0
- data/test/scriptorium-TEST-1754622690-146/config/widgets.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/posts/0001/meta.txt +8 -0
- data/test/scriptorium-TEST-1754622690-146/posts/0001/source.lt3 +6 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/README.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/config.txt +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/initial/post.lt3 +12 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/footer.txt +2 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/header.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/left.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/main.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/config/right.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/gen/text.css +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/layout/layout.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index.lt3 +1 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/index_entry.lt3 +14 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/post.lt3 +13 -0
- data/test/scriptorium-TEST-1754622690-146/themes/standard/templates/widget.lt3 +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_css.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/bootstrap_js.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/common.js +57 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/deploy.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/footer.txt +2 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/global-head.txt +9 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/header.txt +4 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/layout.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/left.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/main.txt +5 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/reddit.txt +10 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/right.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/social.txt +7 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config/status.txt +7 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/config.txt +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/footer.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/header.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/left.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/main.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/layout/right.html +3 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/footer.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/header.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/left.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/main.html +1 -0
- data/test/scriptorium-TEST-1754622690-146/views/sample/output/panes/right.html +1 -0
- data/test/staging/.DS_Store +0 -0
- data/test/syntax_highlighting_test.lt3 +124 -0
- data/test/test_helpers.rb +230 -0
- data/test/tui_editor_integration_test.rb +296 -0
- data/test/tui_integration_test.rb +637 -0
- data/test/unit/api.rb +1056 -0
- data/test/unit/asset_management.rb +245 -0
- data/test/unit/clipboard_test.rb +60 -0
- data/test/unit/contract_test.rb +91 -0
- data/test/unit/core.rb +857 -0
- data/test/unit/deploy_test.rb +187 -0
- data/test/unit/gem_asset_management.rb +189 -0
- data/test/unit/livetext_basic.rb +69 -0
- data/test/unit/livetext_compatibility.rb +89 -0
- data/test/unit/post.rb +244 -0
- data/test/unit/read_commented_file_test.rb +276 -0
- data/test/unit/reddit_test.rb +235 -0
- data/test/unit/repo.rb +548 -0
- data/test/unit/social_test.rb +369 -0
- data/test/unit/symlink_test.rb +213 -0
- data/test/unit/view.rb +431 -0
- data/test/unit/widgets.rb +669 -0
- data/test/wizard_test.rb +123 -0
- data/ui/README.md +67 -0
- data/ui/common/lib/ui_common.rb +8 -0
- data/ui/rubytext/README.md +191 -0
- data/ui/rubytext/bin/scriptorium-rubytext +402 -0
- data/ui/rubytext/lib/rubytext_ui.rb +300 -0
- data/ui/tui/bin/scriptorium +1420 -0
- data/ui/tui/test/tui_test.rb +23 -0
- data/ui/web/app/app.rb +1378 -0
- data/ui/web/app/error_helpers.rb +150 -0
- data/ui/web/app/views/advanced_config.erb +190 -0
- data/ui/web/app/views/asset_management.erb +589 -0
- data/ui/web/app/views/banner_config.erb +200 -0
- data/ui/web/app/views/configure_view.erb +401 -0
- data/ui/web/app/views/dashboard.erb +162 -0
- data/ui/web/app/views/deploy_config.erb +146 -0
- data/ui/web/app/views/edit_pages.erb +195 -0
- data/ui/web/app/views/edit_post.erb +54 -0
- data/ui/web/app/views/error_page.erb +29 -0
- data/ui/web/app/views/header_config.erb +155 -0
- data/ui/web/app/views/layout_config.erb +147 -0
- data/ui/web/app/views/navbar_config.erb +411 -0
- data/ui/web/app/views/view_dashboard.erb +138 -0
- data/ui/web/bin/scriptorium-web +153 -0
- data/ui/web/test/web_basic_test.rb +38 -0
- data/ui/web/test_navbar.txt +7 -0
- data/ui/web/tmp/web_server.log +5 -0
- data/ui/web/tmp/web_server.pid +1 -0
- metadata +360 -5
@@ -0,0 +1,708 @@
|
|
1
|
+
# 11. Reference
|
2
|
+
|
3
|
+
This section provides comprehensive reference information for Scriptorium, including command syntax, configuration options, and technical details.
|
4
|
+
|
5
|
+
## Command Reference
|
6
|
+
|
7
|
+
### Core commands
|
8
|
+
|
9
|
+
#### `scriptorium init [path]`
|
10
|
+
Initialize a new Scriptorium repository.
|
11
|
+
|
12
|
+
**Options:**
|
13
|
+
- `path`: Directory to initialize (default: current directory)
|
14
|
+
|
15
|
+
**Examples:**
|
16
|
+
```bash
|
17
|
+
scriptorium init # Initialize in current directory
|
18
|
+
scriptorium init my-blog # Initialize in my-blog directory
|
19
|
+
```
|
20
|
+
|
21
|
+
#### `scriptorium new post "title"`
|
22
|
+
Create a new blog post.
|
23
|
+
|
24
|
+
**Options:**
|
25
|
+
- `title`: Post title (required)
|
26
|
+
|
27
|
+
**Examples:**
|
28
|
+
```bash
|
29
|
+
scriptorium new post "My First Post"
|
30
|
+
scriptorium new post "Getting Started with Scriptorium"
|
31
|
+
```
|
32
|
+
|
33
|
+
#### `scriptorium edit [file]`
|
34
|
+
Edit a file using the configured editor.
|
35
|
+
|
36
|
+
**Options:**
|
37
|
+
- `file`: File path to edit
|
38
|
+
|
39
|
+
**Examples:**
|
40
|
+
```bash
|
41
|
+
scriptorium edit posts/001.lt3
|
42
|
+
scriptorium edit config.txt
|
43
|
+
scriptorium edit widgets/links/list.txt
|
44
|
+
```
|
45
|
+
|
46
|
+
#### `scriptorium generate [target]`
|
47
|
+
Generate the site or specific components.
|
48
|
+
|
49
|
+
**Options:**
|
50
|
+
- `target`: Specific component to generate (optional)
|
51
|
+
- `post <id>`: Generate specific post
|
52
|
+
- `widget <name>`: Generate specific widget
|
53
|
+
- `view <name>`: Generate specific view
|
54
|
+
|
55
|
+
**Examples:**
|
56
|
+
```bash
|
57
|
+
scriptorium generate # Generate entire site
|
58
|
+
scriptorium generate post 001 # Generate specific post
|
59
|
+
scriptorium generate widget links # Generate links widget
|
60
|
+
```
|
61
|
+
|
62
|
+
#### `scriptorium publish <id>`
|
63
|
+
Publish a draft post.
|
64
|
+
|
65
|
+
**Options:**
|
66
|
+
- `id`: Post ID to publish
|
67
|
+
|
68
|
+
**Examples:**
|
69
|
+
```bash
|
70
|
+
scriptorium publish 001
|
71
|
+
scriptorium publish 002
|
72
|
+
```
|
73
|
+
|
74
|
+
#### `scriptorium list [type]`
|
75
|
+
List posts, views, or other content.
|
76
|
+
|
77
|
+
**Options:**
|
78
|
+
- `type`: Type of content to list
|
79
|
+
- `posts`: List all posts
|
80
|
+
- `views`: List all views
|
81
|
+
- `drafts`: List draft posts
|
82
|
+
|
83
|
+
**Examples:**
|
84
|
+
```bash
|
85
|
+
scriptorium list posts
|
86
|
+
scriptorium list views
|
87
|
+
scriptorium list drafts
|
88
|
+
```
|
89
|
+
|
90
|
+
### View management commands
|
91
|
+
|
92
|
+
#### `scriptorium view <name>`
|
93
|
+
Switch to a different view.
|
94
|
+
|
95
|
+
**Options:**
|
96
|
+
- `name`: View name to switch to
|
97
|
+
|
98
|
+
**Examples:**
|
99
|
+
```bash
|
100
|
+
scriptorium view sample
|
101
|
+
scriptorium view blog
|
102
|
+
```
|
103
|
+
|
104
|
+
#### `scriptorium create view <name> <title> [subtitle]`
|
105
|
+
Create a new view.
|
106
|
+
|
107
|
+
**Options:**
|
108
|
+
- `name`: View name
|
109
|
+
- `title`: View title
|
110
|
+
- `subtitle`: View subtitle (optional)
|
111
|
+
|
112
|
+
**Examples:**
|
113
|
+
```bash
|
114
|
+
scriptorium create view blog "My Blog" "Personal thoughts and ideas"
|
115
|
+
scriptorium create view docs "Documentation"
|
116
|
+
```
|
117
|
+
|
118
|
+
### Post management commands
|
119
|
+
|
120
|
+
#### `scriptorium link <id> [view]`
|
121
|
+
Link a post to a view.
|
122
|
+
|
123
|
+
**Options:**
|
124
|
+
- `id`: Post ID
|
125
|
+
- `view`: View name (default: current view)
|
126
|
+
|
127
|
+
**Examples:**
|
128
|
+
```bash
|
129
|
+
scriptorium link 001
|
130
|
+
scriptorium link 002 blog
|
131
|
+
```
|
132
|
+
|
133
|
+
#### `scriptorium unlink <id> [view]`
|
134
|
+
Unlink a post from a view.
|
135
|
+
|
136
|
+
**Options:**
|
137
|
+
- `id`: Post ID
|
138
|
+
- `view`: View name (default: current view)
|
139
|
+
|
140
|
+
**Examples:**
|
141
|
+
```bash
|
142
|
+
scriptorium unlink 001
|
143
|
+
scriptorium unlink 002 blog
|
144
|
+
```
|
145
|
+
|
146
|
+
#### `scriptorium delete <id>`
|
147
|
+
Delete a post.
|
148
|
+
|
149
|
+
**Options:**
|
150
|
+
- `id`: Post ID to delete
|
151
|
+
|
152
|
+
**Examples:**
|
153
|
+
```bash
|
154
|
+
scriptorium delete 001
|
155
|
+
```
|
156
|
+
|
157
|
+
### Widget commands
|
158
|
+
|
159
|
+
#### `scriptorium generate widget <name>`
|
160
|
+
Generate a specific widget.
|
161
|
+
|
162
|
+
**Options:**
|
163
|
+
- `name`: Widget name (links, pages, featuredposts)
|
164
|
+
|
165
|
+
**Examples:**
|
166
|
+
```bash
|
167
|
+
scriptorium generate widget links
|
168
|
+
scriptorium generate widget pages
|
169
|
+
```
|
170
|
+
|
171
|
+
### Theme commands
|
172
|
+
|
173
|
+
#### `scriptorium theme <name>`
|
174
|
+
Apply a theme to the current view.
|
175
|
+
|
176
|
+
**Options:**
|
177
|
+
- `name`: Theme name
|
178
|
+
|
179
|
+
**Examples:**
|
180
|
+
```bash
|
181
|
+
scriptorium theme standard
|
182
|
+
scriptorium theme custom
|
183
|
+
```
|
184
|
+
|
185
|
+
### Utility commands
|
186
|
+
|
187
|
+
#### `scriptorium status`
|
188
|
+
Show repository status.
|
189
|
+
|
190
|
+
**Examples:**
|
191
|
+
```bash
|
192
|
+
scriptorium status
|
193
|
+
```
|
194
|
+
|
195
|
+
#### `scriptorium help [command]`
|
196
|
+
Show help information.
|
197
|
+
|
198
|
+
**Options:**
|
199
|
+
- `command`: Specific command to get help for
|
200
|
+
|
201
|
+
**Examples:**
|
202
|
+
```bash
|
203
|
+
scriptorium help
|
204
|
+
scriptorium help generate
|
205
|
+
```
|
206
|
+
|
207
|
+
## Configuration Files
|
208
|
+
|
209
|
+
### Repository configuration
|
210
|
+
|
211
|
+
#### `config/repo.txt`
|
212
|
+
Main repository configuration file.
|
213
|
+
|
214
|
+
**Example:**
|
215
|
+
```
|
216
|
+
title: My Scriptorium Site
|
217
|
+
description: A personal blog and website
|
218
|
+
author: Your Name
|
219
|
+
email: your.email@example.com
|
220
|
+
url: https://example.com
|
221
|
+
```
|
222
|
+
|
223
|
+
### View configuration
|
224
|
+
|
225
|
+
#### `config.txt`
|
226
|
+
View-specific configuration.
|
227
|
+
|
228
|
+
**Example:**
|
229
|
+
```
|
230
|
+
title: My Blog
|
231
|
+
subtitle: Personal thoughts and ideas
|
232
|
+
theme: standard
|
233
|
+
layout: default
|
234
|
+
```
|
235
|
+
|
236
|
+
#### `config/layout.txt`
|
237
|
+
Layout configuration defining page structure.
|
238
|
+
|
239
|
+
**Example:**
|
240
|
+
```
|
241
|
+
header
|
242
|
+
left 20%
|
243
|
+
main
|
244
|
+
right 20%
|
245
|
+
footer
|
246
|
+
```
|
247
|
+
|
248
|
+
#### `config/header.txt`
|
249
|
+
Header configuration including navigation.
|
250
|
+
|
251
|
+
**Example:**
|
252
|
+
```
|
253
|
+
# Site title
|
254
|
+
.title My Blog
|
255
|
+
|
256
|
+
# Navigation links
|
257
|
+
.nav-link "Home" "/"
|
258
|
+
.nav-link "About" "pages/about.html"
|
259
|
+
.nav-link "Contact" "pages/contact.html"
|
260
|
+
```
|
261
|
+
|
262
|
+
### Widget configuration
|
263
|
+
|
264
|
+
#### `widgets/links/list.txt`
|
265
|
+
Links widget configuration.
|
266
|
+
|
267
|
+
**Format:**
|
268
|
+
```
|
269
|
+
url, title
|
270
|
+
url, title
|
271
|
+
```
|
272
|
+
|
273
|
+
**Example:**
|
274
|
+
```
|
275
|
+
https://example.com, Example Site
|
276
|
+
https://github.com, GitHub Profile
|
277
|
+
```
|
278
|
+
|
279
|
+
#### `widgets/pages/list.txt`
|
280
|
+
Pages widget configuration.
|
281
|
+
|
282
|
+
**Format:**
|
283
|
+
```
|
284
|
+
page-name
|
285
|
+
page-name
|
286
|
+
```
|
287
|
+
|
288
|
+
**Example:**
|
289
|
+
```
|
290
|
+
about
|
291
|
+
contact
|
292
|
+
documentation
|
293
|
+
```
|
294
|
+
|
295
|
+
#### `widgets/featuredposts/list.txt`
|
296
|
+
Featured posts widget configuration.
|
297
|
+
|
298
|
+
**Format:**
|
299
|
+
```
|
300
|
+
id title
|
301
|
+
id
|
302
|
+
```
|
303
|
+
|
304
|
+
**Example:**
|
305
|
+
```
|
306
|
+
001 My Important Post
|
307
|
+
002 Another Featured Post
|
308
|
+
003
|
309
|
+
```
|
310
|
+
|
311
|
+
### Theme configuration
|
312
|
+
|
313
|
+
#### `themes/standard/config.txt`
|
314
|
+
Theme configuration file.
|
315
|
+
|
316
|
+
**Example:**
|
317
|
+
```
|
318
|
+
name: Standard Theme
|
319
|
+
version: 1.0
|
320
|
+
description: Default Scriptorium theme
|
321
|
+
author: Scriptorium Team
|
322
|
+
```
|
323
|
+
|
324
|
+
## LiveText Reference
|
325
|
+
|
326
|
+
### Basic syntax
|
327
|
+
|
328
|
+
#### Inline formatting
|
329
|
+
```
|
330
|
+
**bold text**
|
331
|
+
*italic text*
|
332
|
+
`code text`
|
333
|
+
[link text](url)
|
334
|
+

|
335
|
+
```
|
336
|
+
|
337
|
+
#### Dot commands
|
338
|
+
```
|
339
|
+
.command
|
340
|
+
.command parameter
|
341
|
+
.command "parameter with spaces"
|
342
|
+
```
|
343
|
+
|
344
|
+
#### Dot commands with body
|
345
|
+
```
|
346
|
+
.command
|
347
|
+
content here
|
348
|
+
.end
|
349
|
+
```
|
350
|
+
|
351
|
+
### Post metadata
|
352
|
+
|
353
|
+
#### Required metadata
|
354
|
+
```
|
355
|
+
.title Post Title
|
356
|
+
```
|
357
|
+
|
358
|
+
#### Optional metadata
|
359
|
+
```
|
360
|
+
.subtitle Post Subtitle
|
361
|
+
.tags tag1, tag2, tag3
|
362
|
+
.blurb Post excerpt for summaries
|
363
|
+
.views view1, view2
|
364
|
+
.pubdate 2024-01-15
|
365
|
+
```
|
366
|
+
|
367
|
+
#### Social media metadata
|
368
|
+
```
|
369
|
+
.og_title Title for social media
|
370
|
+
.og_description Description for social media
|
371
|
+
.og_image /path/to/image.jpg
|
372
|
+
.twitter_card summary_large_image
|
373
|
+
.twitter_title Twitter title
|
374
|
+
.twitter_description Twitter description
|
375
|
+
```
|
376
|
+
|
377
|
+
#### Reddit integration metadata
|
378
|
+
```
|
379
|
+
.reddit_subreddit programming
|
380
|
+
.reddit_title Custom Reddit title
|
381
|
+
.reddit_flair "Discussion"
|
382
|
+
.reddit_nsfw false
|
383
|
+
.reddit_spoiler false
|
384
|
+
```
|
385
|
+
|
386
|
+
### Template variables
|
387
|
+
|
388
|
+
#### Post variables
|
389
|
+
```
|
390
|
+
%{post.title} # Post title
|
391
|
+
%{post.body} # Post content
|
392
|
+
%{post.pubdate} # Publication date
|
393
|
+
%{post.tags} # Post tags
|
394
|
+
%{post.blurb} # Post excerpt
|
395
|
+
%{post.url} # Post URL
|
396
|
+
%{post.slug} # Post slug
|
397
|
+
```
|
398
|
+
|
399
|
+
#### Site variables
|
400
|
+
```
|
401
|
+
%{site.title} # Site title
|
402
|
+
%{site.description} # Site description
|
403
|
+
%{site.url} # Site URL
|
404
|
+
%{site.author} # Site author
|
405
|
+
```
|
406
|
+
|
407
|
+
#### View variables
|
408
|
+
```
|
409
|
+
%{view.name} # View name
|
410
|
+
%{view.title} # View title
|
411
|
+
%{view.subtitle} # View subtitle
|
412
|
+
```
|
413
|
+
|
414
|
+
### Control structures
|
415
|
+
|
416
|
+
#### Conditionals
|
417
|
+
```
|
418
|
+
.if condition
|
419
|
+
content
|
420
|
+
.end
|
421
|
+
|
422
|
+
.if post.tags.include?("featured")
|
423
|
+
This is a featured post!
|
424
|
+
.end
|
425
|
+
```
|
426
|
+
|
427
|
+
#### Loops
|
428
|
+
```
|
429
|
+
.each item in collection
|
430
|
+
content
|
431
|
+
.end
|
432
|
+
|
433
|
+
.each post in posts
|
434
|
+
%{post.title}
|
435
|
+
.end
|
436
|
+
```
|
437
|
+
|
438
|
+
#### Includes
|
439
|
+
```
|
440
|
+
.include "file.lt3"
|
441
|
+
.include "templates/header.lt3"
|
442
|
+
```
|
443
|
+
|
444
|
+
## API Reference
|
445
|
+
|
446
|
+
### Core classes
|
447
|
+
|
448
|
+
#### Scriptorium::Repo
|
449
|
+
Main repository class for managing Scriptorium sites.
|
450
|
+
|
451
|
+
**Methods:**
|
452
|
+
```ruby
|
453
|
+
# Initialize repository
|
454
|
+
repo = Scriptorium::Repo.open(path)
|
455
|
+
|
456
|
+
# Create new repository
|
457
|
+
repo = Scriptorium::Repo.create(path, title, description)
|
458
|
+
|
459
|
+
# Get current view
|
460
|
+
view = repo.current_view
|
461
|
+
|
462
|
+
# List all views
|
463
|
+
views = repo.views
|
464
|
+
|
465
|
+
# Create post
|
466
|
+
post = repo.create_post(title: "Title", body: "Content")
|
467
|
+
|
468
|
+
# Get post by ID
|
469
|
+
post = repo.post(id)
|
470
|
+
|
471
|
+
# List all posts
|
472
|
+
posts = repo.all_posts
|
473
|
+
```
|
474
|
+
|
475
|
+
#### Scriptorium::View
|
476
|
+
Represents a view within a repository.
|
477
|
+
|
478
|
+
**Methods:**
|
479
|
+
```ruby
|
480
|
+
# Get view name
|
481
|
+
name = view.name
|
482
|
+
|
483
|
+
# Get view title
|
484
|
+
title = view.title
|
485
|
+
|
486
|
+
# Get view directory
|
487
|
+
dir = view.dir
|
488
|
+
|
489
|
+
# Generate view
|
490
|
+
view.generate
|
491
|
+
|
492
|
+
# Apply theme
|
493
|
+
view.apply_theme(theme_name)
|
494
|
+
```
|
495
|
+
|
496
|
+
#### Scriptorium::Post
|
497
|
+
Represents a blog post.
|
498
|
+
|
499
|
+
**Methods:**
|
500
|
+
```ruby
|
501
|
+
# Get post title
|
502
|
+
title = post.title
|
503
|
+
|
504
|
+
# Get post body
|
505
|
+
body = post.body
|
506
|
+
|
507
|
+
# Get post tags
|
508
|
+
tags = post.tags
|
509
|
+
|
510
|
+
# Get post views
|
511
|
+
views = post.views
|
512
|
+
|
513
|
+
# Update post
|
514
|
+
post.update(fields)
|
515
|
+
|
516
|
+
# Delete post
|
517
|
+
post.delete
|
518
|
+
```
|
519
|
+
|
520
|
+
### Widget classes
|
521
|
+
|
522
|
+
#### Scriptorium::Widget::Links
|
523
|
+
Links widget for displaying external links.
|
524
|
+
|
525
|
+
**Methods:**
|
526
|
+
```ruby
|
527
|
+
# Get list of links
|
528
|
+
links = widget.get_list
|
529
|
+
|
530
|
+
# Generate widget
|
531
|
+
widget.generate
|
532
|
+
|
533
|
+
# Get widget card content
|
534
|
+
card = widget.card
|
535
|
+
```
|
536
|
+
|
537
|
+
#### Scriptorium::Widget::Pages
|
538
|
+
Pages widget for displaying internal pages.
|
539
|
+
|
540
|
+
**Methods:**
|
541
|
+
```ruby
|
542
|
+
# Generate widget
|
543
|
+
widget.generate
|
544
|
+
|
545
|
+
# Get widget card content
|
546
|
+
card = widget.card
|
547
|
+
```
|
548
|
+
|
549
|
+
#### Scriptorium::Widget::FeaturedPosts
|
550
|
+
Featured posts widget for highlighting specific posts.
|
551
|
+
|
552
|
+
**Methods:**
|
553
|
+
```ruby
|
554
|
+
# Parse featured line
|
555
|
+
post_id, title = widget.parse_featured_line(line)
|
556
|
+
|
557
|
+
# Get post title
|
558
|
+
title = widget.get_post_title(post_id)
|
559
|
+
|
560
|
+
# Generate widget
|
561
|
+
widget.generate
|
562
|
+
```
|
563
|
+
|
564
|
+
### Helper methods
|
565
|
+
|
566
|
+
#### File operations
|
567
|
+
```ruby
|
568
|
+
# Read file
|
569
|
+
content = read_file(path)
|
570
|
+
|
571
|
+
# Write file
|
572
|
+
write_file(path, content)
|
573
|
+
|
574
|
+
# Check if file exists
|
575
|
+
exists = file_exist?(path)
|
576
|
+
|
577
|
+
# Make directory
|
578
|
+
make_dir(path)
|
579
|
+
```
|
580
|
+
|
581
|
+
#### HTML generation
|
582
|
+
```ruby
|
583
|
+
# Generate HTML card
|
584
|
+
html = html_card(title, tag, content)
|
585
|
+
|
586
|
+
# Generate HTML container
|
587
|
+
html = html_container(content)
|
588
|
+
|
589
|
+
# Generate HTML body
|
590
|
+
html = html_body(css) { content }
|
591
|
+
```
|
592
|
+
|
593
|
+
## View Tree Structure
|
594
|
+
|
595
|
+
### Repository structure
|
596
|
+
```
|
597
|
+
repository/
|
598
|
+
├── config/
|
599
|
+
│ ├── repo.txt # Repository configuration
|
600
|
+
│ ├── deploy.txt # Deployment configuration
|
601
|
+
│ └── widgets.txt # Available widgets
|
602
|
+
├── views/
|
603
|
+
│ ├── sample/ # Sample view
|
604
|
+
│ │ ├── config.txt # View configuration
|
605
|
+
│ │ ├── config/ # View-specific config
|
606
|
+
│ │ ├── posts/ # Post files
|
607
|
+
│ │ ├── pages/ # Page files
|
608
|
+
│ │ ├── widgets/ # Widget configurations
|
609
|
+
│ │ ├── themes/ # View-specific themes
|
610
|
+
│ │ ├── layout/ # Layout files
|
611
|
+
│ │ ├── output/ # Generated output
|
612
|
+
│ │ └── staging/ # Staging area
|
613
|
+
│ └── other-view/ # Additional views
|
614
|
+
├── themes/
|
615
|
+
│ └── standard/ # Standard theme
|
616
|
+
│ ├── config.txt # Theme configuration
|
617
|
+
│ ├── assets/ # Theme assets
|
618
|
+
│ ├── templates/ # Theme templates
|
619
|
+
│ └── layout/ # Theme layout
|
620
|
+
├── posts/ # Global posts
|
621
|
+
├── drafts/ # Draft posts
|
622
|
+
└── .scriptorium # Repository metadata
|
623
|
+
```
|
624
|
+
|
625
|
+
### View structure
|
626
|
+
```
|
627
|
+
view/
|
628
|
+
├── config.txt # View configuration
|
629
|
+
├── config/ # Configuration files
|
630
|
+
│ ├── layout.txt # Layout configuration
|
631
|
+
│ ├── header.txt # Header configuration
|
632
|
+
│ ├── left.txt # Left sidebar configuration
|
633
|
+
│ ├── right.txt # Right sidebar configuration
|
634
|
+
│ ├── main.txt # Main content configuration
|
635
|
+
│ └── footer.txt # Footer configuration
|
636
|
+
├── posts/ # Post files
|
637
|
+
│ ├── 001.lt3 # Post 001
|
638
|
+
│ ├── 002.lt3 # Post 002
|
639
|
+
│ └── ... # Additional posts
|
640
|
+
├── pages/ # Page files
|
641
|
+
│ ├── about.html # About page
|
642
|
+
│ ├── contact.html # Contact page
|
643
|
+
│ └── ... # Additional pages
|
644
|
+
├── widgets/ # Widget configurations
|
645
|
+
│ ├── links/ # Links widget
|
646
|
+
│ │ └── list.txt # Links list
|
647
|
+
│ ├── pages/ # Pages widget
|
648
|
+
│ │ └── list.txt # Pages list
|
649
|
+
│ └── featuredposts/ # Featured posts widget
|
650
|
+
│ └── list.txt # Featured posts list
|
651
|
+
├── themes/ # View-specific themes
|
652
|
+
├── layout/ # Layout files
|
653
|
+
│ ├── header.html # Header template
|
654
|
+
│ ├── footer.html # Footer template
|
655
|
+
│ └── ... # Additional layout files
|
656
|
+
├── output/ # Generated output
|
657
|
+
│ ├── index.html # Front page
|
658
|
+
│ ├── posts/ # Generated post pages
|
659
|
+
│ ├── pages/ # Generated page files
|
660
|
+
│ ├── assets/ # Assets (CSS, JS, images)
|
661
|
+
│ └── widgets/ # Generated widget files
|
662
|
+
└── staging/ # Staging area
|
663
|
+
```
|
664
|
+
|
665
|
+
### Theme structure
|
666
|
+
```
|
667
|
+
theme/
|
668
|
+
├── config.txt # Theme configuration
|
669
|
+
├── assets/ # Theme assets
|
670
|
+
│ ├── images/ # Theme images
|
671
|
+
│ ├── fonts/ # Theme fonts
|
672
|
+
│ └── ... # Additional assets
|
673
|
+
├── templates/ # Theme templates
|
674
|
+
│ ├── index.lt3 # Front page template
|
675
|
+
│ ├── post.lt3 # Post template
|
676
|
+
│ └── widget.lt3 # Widget template
|
677
|
+
├── layout/ # Theme layout
|
678
|
+
│ ├── config/ # Layout configuration
|
679
|
+
│ ├── gen/ # Generated files
|
680
|
+
│ └── layout.txt # Layout structure
|
681
|
+
├── header/ # Header templates
|
682
|
+
├── initial/ # Initial content
|
683
|
+
└── ... # Additional theme files
|
684
|
+
```
|
685
|
+
|
686
|
+
### File naming conventions
|
687
|
+
|
688
|
+
#### Posts
|
689
|
+
- Format: `NNN-title.lt3` (e.g., `001-my-first-post.lt3`)
|
690
|
+
- ID must be three-digit number
|
691
|
+
- Title should be lowercase with hyphens
|
692
|
+
|
693
|
+
#### Pages
|
694
|
+
- Format: `name.html` (e.g., `about.html`, `contact.html`)
|
695
|
+
- Use descriptive, lowercase names
|
696
|
+
- Avoid spaces and special characters
|
697
|
+
|
698
|
+
#### Widgets
|
699
|
+
- Directory names: lowercase with hyphens
|
700
|
+
- Configuration files: `list.txt` or `config.txt`
|
701
|
+
- Generated files: `widget-name-card.html`
|
702
|
+
|
703
|
+
#### Themes
|
704
|
+
- Directory names: lowercase with hyphens
|
705
|
+
- Configuration: `config.txt`
|
706
|
+
- Templates: `.lt3` extension
|
707
|
+
|
708
|
+
This reference section provides the technical details needed for advanced Scriptorium usage and development. For more specific information about certain areas, consult the relevant sections of this user guide or the Scriptorium source code.
|