Changes to wws

Breck Yunits
Breck Yunits
4 months ago
package.json
Changed around line 11
- "up": "npm install scroll-cli@latest"
+ "up": "npm install scroll-cli@latest; npm install scrollsdk@latest"
Changed around line 34
- "scroll-cli": "^130.5.0",
- "scrollsdk": "^84.0.0"
+ "scroll-cli": "^133.0.0",
+ "scrollsdk": "^87.0.0"
settings.parsers
Changed around line 3: wwsSubfolderParser
- cells keywordCell anyCell urlCell
+ atoms keywordAtom anyAtom urlAtom
wws.js
Changed around line 68: class WWSCli {
- .filter(word => word.endsWith(this.CommandFnDecoratorSuffix))
+ .filter(atom => atom.endsWith(this.CommandFnDecoratorSuffix))
Changed around line 204: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- const subfolderName = sanitizeFolderName(subfolder.words[1])
+ const subfolderName = sanitizeFolderName(subfolder.atoms[1])
- const sourceRepo = subfolder.words[2]
+ const sourceRepo = subfolder.atoms[2]
Breck Yunits
Breck Yunits
4 months ago
root.scroll
Changed around line 88: registered 6/12/2024
+
+ folder zombo
+ description You can do anything.
+ www https://zombo.breckyunits.com
+ source https://github.com/breck7/zombo
+ editor Breck Yunits
+ email breck7@gmail.com
+ registered 9/14/2024
+ expires 9/14/2034
+ rep Breck Yunits
+ transactionId pm_1Pz4fFJktJxKl0r537cx4sCs
Breck Yunits
Breck Yunits
4 months ago
package.json
Changed around line 34
- "scroll-cli": "^130.4.1",
+ "scroll-cli": "^130.5.0",
Breck Yunits
Breck Yunits
4 months ago
clientInstall.scroll
Changed around line 1
+
+ From npm:
+ code
+ sudo npm install -g @breck/wws
+
+ From source:
Breck Yunits
Breck Yunits
4 months ago
package.json
Changed around line 1
- "name": "wws",
+ "name": "@breck/wws",
Breck Yunits
Breck Yunits
4 months ago
package.json
Changed around line 34
- "scroll-cli": "^130.3.6",
+ "scroll-cli": "^130.4.1",
Breck Yunits
Breck Yunits
4 months ago
wws.js
Changed around line 91: class WWSCli {
- const content = `title Your Copy of the World Wide Scroll
+ const content = `title The World Wide Scroll
- WWS version ${WWS_VERSION}
- https://wws.scroll.pub
- style text-align:center;
-
- import ../header.scroll
-
- thinColumns 1
-
- code
- ${wwsDir}
-
- endColumns
+ center
+ Your copy of the WWS is stored in \`${wwsDir}\`. ${this.fetchedFolders.length}/${this.folders.length} folders fetched. WWS version: ${WWS_VERSION}.
- thinColumns
+ ../header.scroll
Changed around line 112: wwsSnippetsParser
+ thinColumns
Changed around line 123: snippets ${this.fetchedFolders
-
- thinColumns 1
-
- # Fetched
+ thinColumn
+ # Fetched (${this.fetchedFolders.length})
-
- # Unfetched
+ # Unfetched (${this.unfetchedFolders.length})
- endColumns
-
Changed around line 223: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
+ buildCommand() {
+ this.init()
+ this.buildIndexPage()
+ }
+
Breck Yunits
Breck Yunits
4 months ago
wws.js
Changed around line 91: class WWSCli {
- const content = `title Your World Wide Scroll
+ const content = `title Your Copy of the World Wide Scroll
Breck Yunits
Breck Yunits
4 months ago
package.json
Changed around line 1
- "version": "0.10.0",
+ "version": "0.11.0",
releaseNotes.scroll
Changed around line 6: header.scroll
- thinColumns 1
+ thinColumn
- endColumns
-
+
+ br
+ šŸ“¦ 0.11.0 9/12/2024
+ šŸ„ bug fixes
+
+ šŸ“¦ 0.10.0 9/6/2024
+ šŸ„ upgrade scroll
+
Breck Yunits
Breck Yunits
4 months ago
clientInstall.scroll
Changed around line 1
- # Install the WWS client
+ # WWS command line client one-liner install
- git clone https://github.com/breck7/wws
- cd wws
- npm install --omit=dev
- npm install --omit=dev -g .
- wws list
- # Fetch a few sites:
- wws fetch scroll breck pldb
- wws open
+ git clone https://github.com/breck7/wws && cd wws && npm install --omit=dev && sudo npm install --omit=dev -g . && wws
+
+ # Fetch sites and open
+ code
+ wws fetch scroll breck pldb && wws open
+
+ # Uninstalling
+ code
+ sudo npm uninstall -g wws
wws.js
Changed around line 124: wwsSnippetsParser
- const settings = this.getFolderSettings(concept.id)
+ const settings = this.getFolderSettings(concept.folder)
- return concept.id + "/" + snippets
+ return concept.folder + "/" + snippets
Changed around line 138: endColumns
- ${this.fetchedFolders.map(concept => `- ${concept.id}\n link ${concept.id}/index.html`).join("\n")}
+ ${this.fetchedFolders.map(concept => `- ${concept.folder}\n link ${concept.folder}/index.html`).join("\n")}
- ${this.unfetchedFolders.map(concept => `- ${concept.id}`).join("\n")}
+ ${this.unfetchedFolders.map(concept => `- ${concept.folder}`).join("\n")}
Changed around line 160: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- concepts.forEach(concept => (concept.fetched = Disk.exists(path.join(wwsDir, concept.id))))
+ concepts.forEach(concept => (concept.fetched = Disk.exists(path.join(wwsDir, concept.folder))))
Changed around line 175: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- const { fetched, id, description } = concept
+ const { fetched, folder, description } = concept
- Folder: id,
+ Folder: folder,
Changed around line 199: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- const folder = this.folders.find(concept => concept.id === folderName)
+ const folder = this.folders.find(concept => concept.folder === folderName)
- const rootFolder = path.join(wwsDir, folder.id)
+ const rootFolder = path.join(wwsDir, folder.folder)
Changed around line 214: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- const settingsParticle = this.getFolderSettings(folder.id)
+ const settingsParticle = this.getFolderSettings(folder.folder)
Changed around line 232: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- if (!folderNames.length) fetchedFolders.forEach(concept => this.fetchScroll(concept.id))
+ if (!folderNames.length) fetchedFolders.forEach(concept => this.fetchScroll(concept.folder))
Breck Yunits
Breck Yunits
4 months ago
cdb not ready
root.scroll
Changed around line 88: registered 6/12/2024
-
- folder cancerdb
- description Datasets about Cancer
- www https://cancerdb.com
- source https://github.com/breck7/CancerDB
- editor Breck Yunits
- email breck7@gmail.com
- registered 6/12/2024
- expires 6/12/2034
- rep Breck Yunits
- transactionId pm_1PQz7LJktJxKl0r5x39CYvIV
Breck Yunits
Breck Yunits
4 months ago
wws.gif
Breck Yunits
Breck Yunits
4 months ago
wws.gif
Breck Yunits
Breck Yunits
4 months ago
wws.gif
Breck Yunits
Breck Yunits
4 months ago
readme.scroll
Changed around line 66: Download the list of root folders in the World Wide Scroll as:
- printMeasures
-
- printConcepts
-
- # Logo
- image wws.jpg
+ table wws.tsv
+ printTable
wws.jpg
Breck Yunits
Breck Yunits
4 months ago
gettingStarted.scroll
Changed around line 5: printTitle
- After you've purchased your root folder, a WWS Rep will reach out to you via the email you provided at checkout to help onboard your site to your WWS folder.
+ After you've purchased your Scroll Name, a WWS Rep will reach out to you via the email you provided at checkout to help onboard your work to the WWS.
readme.scroll
Changed around line 11: mediumColumns 1
+ View slideshow
+ https://breckyunits.com/theScroll.html
+
- *Intelligent.* Built not on HTML, but from the ground up in a simple, expandable language, designed for both humans and AIs.
Changed around line 24: The WWS is like the World Wide Web, except:
- # Register a Folder
+ # Buy a Scroll Name
- You can now register a root folder in the World Wide Scroll!
+ You can now buy a Scroll Name in the World Wide Scroll!
- When you register a folder in the WWS, you become that folder's "Editor".
+ When you buy a Scroll Name, you can create a "folder" in the World Wide Scroll.
- The Editor is the person responsible for updating the metadata about that folder.
+ A folder is just a few lines of metadata about your Scroll Name stored in the root.scroll file.
+ link root.scroll root.scroll
- Registration funds go toward the development of the Scroll language ecosystem. A portion is also distributed to the "WWS Reps" who help onboard and maintain the community.
+ Revenue from Scroll Name sales go toward the development of the Scroll language ecosystem. A portion is also distributed to the "WWS Reps" who help onboard and maintain the community.
- After you register your root folder, check out the Getting Started Guide.
+ After you buy your name, check out the Getting Started Guide.
Breck Yunits
Breck Yunits
4 months ago
index.scroll
Changed around line 6: title The World Wide Scroll
- # Add Your Voice
+ # Make Something You Love
stripeButton.scroll
Changed around line 2: importOnly
- button Buy folder
+ button Buy a Scroll Name
Breck Yunits
Breck Yunits
4 months ago
package.json
Changed around line 34
- "scroll-cli": "^130.3.5",
+ "scroll-cli": "^130.3.6",
Breck Yunits
Breck Yunits
4 months ago
package.json
Changed around line 34
- "scroll-cli": "^130.1.1",
+ "scroll-cli": "^130.3.5",
stripeButton.scroll
Changed around line 2: importOnly
-
-
- buy-button-id="buy_btn_1PugMzJktJxKl0r55AmfK7nL"
- publishable-key="pk_live_51IQx1tJktJxKl0r5YOhZM9Th6S8zhR2DXlUlJFIuLSrgzu3nfkKTx96ym19ihYYIeEnf3daa1TCPgDt0To2qt4Qk00TzjPmP9c"
- >
-
+ button Buy folder
+ https://buy.stripe.com/cN2dUC82JaiNbaEfZn
Breck Yunits
Breck Yunits
4 months ago
.gitignore
Changed around line 7
- wws/
+ wws/
+ *.css
+ *.js
Breck Yunits
Breck Yunits
4 months ago
index.scroll
Changed around line 17: Readme
+
+ br
+ scrollVersionLink
Breck Yunits
Breck Yunits
4 months ago
package.json
Changed around line 1
- "version": "0.9.0",
+ "version": "0.10.0",
Breck Yunits
Breck Yunits
4 months ago
add.scroll
Changed around line 1
- import header.scroll
+ header.scroll
- import root.scroll
+ root.scroll
- import pageFooter.scroll
+ pageFooter.scroll
gettingStarted.scroll
Changed around line 1
- import header.scroll
+ header.scroll
Changed around line 33: If you need _any_ help with these guidelines, share your issue on github.com/bre
- import clientInstall.scroll
-
- import pageFooter.scroll
+ clientInstall.scroll
+ pageFooter.scroll
index.scroll
Changed around line 1
- import header.scroll
+ header.scroll
Changed around line 9: title The World Wide Scroll
- import animation.scroll
+ animation.scroll
- import stripeButton.scroll
+ stripeButton.scroll
package.json
Changed around line 34
- "scroll-cli": "^126.0.1",
+ "scroll-cli": "^130.1.1",
readme.scroll
Changed around line 2: buildConcepts wws.csv wws.json wws.tsv
- import header.scroll
+ header.scroll
Changed around line 19: The WWS is like the World Wide Web, except:
- *Human first.* Instead of anonymous domains the WWS has folders owned by verified humans.
- *Trustworthy.* Source code and change history behind every page.
- import clientInstall.scroll
+ clientInstall.scroll
Changed around line 32: The Editor is the person responsible for updating the metadata about that folder
- import stripeButton.scroll
+ stripeButton.scroll
- import finePrint.scroll
+ finePrint.scroll
- import root.scroll
+ root.scroll
- import stripeButton.scroll
+ stripeButton.scroll
Changed around line 72: image wws.jpg
- import pageFooter.scroll
+ pageFooter.scroll
releaseNotes.scroll
Changed around line 2: buildConcepts releaseNotes.csv releaseNotes.json releaseNotes.tsv
- import header.scroll
+ header.scroll
Changed around line 14: Download as CSV | TSV | JSON
- import node_modules/scroll-cli/microlangs/changes.parsers
+ node_modules/scroll-cli/microlangs/changes.parsers
Changed around line 33: thinColumns
- import footer.scroll
+ footer.scroll
Breck Yunits
Breck Yunits
4 months ago
add.scroll
Changed around line 7: mediumColumns 1
- form
+ classicForm
+
+ scrollForm
package.json
Changed around line 34
- "scroll-cli": "^125.8.0",
+ "scroll-cli": "^126.0.1",
Breck Yunits
Breck Yunits
4 months ago
add.scroll
Changed around line 1
+ title WWS Registration Form
+
+ import header.scroll
+ printTitle
+
+ mediumColumns 1
+
+ import root.scroll
+
+ form
+
+ import pageFooter.scroll
package.json
Changed around line 34
- "scroll-cli": "^125.6.0",
+ "scroll-cli": "^125.8.0",
root.scroll
Changed around line 2
- idParser
+ folderNameParser
+ crux folder
+ description What is the folder name?
Changed around line 56: transactionIdParser
- id scroll
+ folder scroll
Changed around line 67: expires 6/12/2034
- id breck
+ folder breck
Changed around line 78: expires 6/12/2034
- id pldb
+ folder pldb
Changed around line 89: expires 6/12/2034
- id cancerdb
+ folder cancerdb
Breck Yunits
Breck Yunits
4 months ago
readme.scroll
Changed around line 24: import clientInstall.scroll
- You can now register a root folder in the World Wide Scroll for $100 for 10 years.
+ You can now register a root folder in the World Wide Scroll!
Breck Yunits
Breck Yunits
4 months ago
package.json
Changed around line 34
- "scroll-cli": "^125.2.0",
+ "scroll-cli": "^125.6.0",
stripeButton.scroll
Changed around line 1
-

-
-
+ br 2
+ center
-
- buy-button-id="buy_btn_1PpYRJJktJxKl0r5IqXEQhSp"
+ buy-button-id="buy_btn_1PugMzJktJxKl0r55AmfK7nL"
-
-
-
-

+
+ br 2
Breck Yunits
Breck Yunits
5 months ago
index.scroll
Changed around line 13: import animation.scroll
+ Readme
+ center
+ style color:grey;
+ link readme.html
package.json
Changed around line 34
- "scroll-cli": "^125.0.1",
+ "scroll-cli": "^125.2.0",
wws.js
Changed around line 5: const parseArgs = require("minimist")
- // Scroll Notation Includes
+ // Particles Includes
Breck Yunits
Breck Yunits
5 months ago
package.json
Changed around line 34
- "scroll-cli": "^121.0.0",
- "scrollsdk": "^80.1.1"
+ "scroll-cli": "^125.0.1",
+ "scrollsdk": "^84.0.0"
wws.js
Changed around line 7: const fs = require("fs")
- const { TreeNode } = require("scrollsdk/products/TreeNode.js")
+ const { Particle } = require("scrollsdk/products/Particle.js")
Changed around line 173: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- const table = new TreeNode(
+ const table = new Particle(
Changed around line 193: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- if (!Disk.exists(wwsFile)) return new TreeNode()
- return new TreeNode(Disk.read(wwsFile))
+ if (!Disk.exists(wwsFile)) return new Particle()
+ return new Particle(Disk.read(wwsFile))
Changed around line 214: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- const settingsTree = this.getFolderSettings(folder.id)
- settingsTree
- .filter(node => node.getLine().startsWith("subfolder"))
+ const settingsParticle = this.getFolderSettings(folder.id)
+ settingsParticle
+ .filter(particle => particle.getLine().startsWith("subfolder"))
wws.test.js
Changed around line 6: const path = require("path")
- const testTree = {}
+ const testParticles = {}
- testTree.basics = areEqual => {
+ testParticles.basics = areEqual => {
- if (module && !module.parent) TestRacer.testSingleFile(__filename, testTree)
+ if (module && !module.parent) TestRacer.testSingleFile(__filename, testParticles)
- module.exports = { testTree }
+ module.exports = { testParticles }
Breck Yunits
Breck Yunits
5 months ago
header.scroll
Changed around line 2: importOnly
- downloadUrl https://github.com/breck7/wws/archive/refs/heads/wws.zip
package.json
Changed around line 34
- "scroll-cli": "^120.2.0",
+ "scroll-cli": "^121.0.0",
stripeButton.scroll
Changed around line 5: importOnly
-
+
- buy-button-id="buy_btn_1Pj87XJktJxKl0r5x2fJ5GMp"
+ buy-button-id="buy_btn_1PpYRJJktJxKl0r5IqXEQhSp"
Breck Yunits
Breck Yunits
5 months ago
gettingStarted.scroll
Changed around line 35: By adhering to these guidelines, youā€™ll help create a more intelligent, offlin
- pageFooter
+ import pageFooter.scroll
header.scroll
Changed around line 8: viewSourceBaseUrl https://github.com/breck7/wws/blob/main
- pageHeader
+ homeButton
+ viewSourceButton
package.json
Changed around line 34
- "scroll-cli": "^115.2.0",
+ "scroll-cli": "^120.2.0",
pageFooter.scroll
Changed around line 1
+ importOnly
+ center
+ viewSourceButton
+ scrollVersionLink
readme.scroll
Changed around line 72: image wws.jpg
- pageFooter
+ import pageFooter.scroll
wws.js
Changed around line 146: ${this.unfetchedFolders.map(concept => `- ${concept.id}`).join("\n")}
- pageFooter
+ center
+ viewSourceButton
+ scrollVersionLink
Breck Yunits
Breck Yunits
5 months ago
package.json
Changed around line 34
- "scroll-cli": "^109.2.0",
+ "scroll-cli": "^115.2.0",
Breck Yunits
Breck Yunits
6 months ago
stripeButton.scroll
Changed around line 2: importOnly
+
-
-
-
changes.parsers
Changed around line 0
- // Changes: A Mini-Language for Change Logs.
-
- versionParser
- crux šŸ“¦
- cells keywordCell semanticVersionCell dateCell
- description What is the semantic version number?
- extends h1Parser
- // Todo: mixins in Parsers would make this easier.
- boolean isMeasure true
- boolean isMeasureRequired true
- boolean isConceptDelimiter true
- float sortIndex 1
- javascript
- get measureValue() {
- return this.getWord(1)
- }
- measureName = "version"
-
- bugFixParser
- crux šŸ„
- extends abstractCustomListItemParser
- newFeatureParser
- crux šŸŽ‰
- extends abstractCustomListItemParser
- breakingChangeParser
- crux āš ļø
- extends abstractCustomListItemParser
- styleTweakParser
- crux šŸŽØ
- extends abstractCustomListItemParser
-
- releaseDateParser
- extends abstractMeasureParser
- boolean isMeasureRequired true
- boolean isComputed true
- float sortIndex 1.1
- javascript
- computeValue(concept) {
- return concept.nodeAt(0).getWord(2)
- }
-
- abstractSummaryParser
- extends abstractMeasureParser
- boolean isComputed true
- float sortIndex 1.2
-
- bugFixesParser
- extends abstractSummaryParser
- description How many bug fixes in this release?
- javascript
- computeValue(concept) {
- return concept.findNodes("šŸ„").length
- }
-
- newFeaturesParser
- extends abstractSummaryParser
- description How many new features in this release?
- javascript
- computeValue(concept) {
- return concept.findNodes("šŸŽ‰").length
- }
-
- breakingChangesParser
- extends abstractSummaryParser
- description How many breaking changes in this release?
- javascript
- computeValue(concept) {
- return concept.findNodes("āš ļø").length
- }
header.scroll
Changed around line 4: buildHtml
- git https://github.com/breck7/wws
index.scroll
Changed around line 1
+ import header.scroll
+
+ title The World Wide Scroll
+
+ # The World Wide Scroll
+ style font-weight: 100; font-size: 400%;
+
+ # Add Your Voice
+ style font-weight: 100; font-size: 200%;
+
+ import animation.scroll
+
+ import stripeButton.scroll
+
package.json
Changed around line 34
- "scroll-cli": "^102.3.0",
+ "scroll-cli": "^109.2.0",
readme.scroll
Changed around line 1
- permalink index.html
releaseNotes.scroll
Changed around line 14: Download as CSV | TSV | JSON
- import changes.parsers
+ import node_modules/scroll-cli/microlangs/changes.parsers
stripeButton.scroll
Changed around line 6: importOnly
+
- publishable-key="pk_live_51IQx1tJktJxKl0r5YOhZM9Th6S8zhR2DXlUlJFIuLSrgzu3nfkKTx96ym19ihYYIeEnf3daa1TCPgDt0To2qt4Qk00TzjPmP9c">
-
+ publishable-key="pk_live_51IQx1tJktJxKl0r5YOhZM9Th6S8zhR2DXlUlJFIuLSrgzu3nfkKTx96ym19ihYYIeEnf3daa1TCPgDt0To2qt4Qk00TzjPmP9c"
+ >
Breck Yunits
Breck Yunits
6 months ago
checkpoint
readme.scroll
Changed around line 9: printTitle
- To provide every human with their own copy of humanity's best information.
+ To provide every human with their own copy of humanity's most intelligent information.
Breck Yunits
Breck Yunits
6 months ago
Version 0.9.0
clientInstall.scroll
Changed around line 1
+
commands.scroll
Changed around line 11: commandDescriptionParser
+
- id where
- description Print where WWS folders are stored.
-
+
+ id where
+ description Print where WWS folders are stored.
+
finePrint.scroll
Changed around line 5
- WWS Folders can only be reserved by individuals.
- The WWS is for high quality, non-anonymous content.
- - You must use your real name and a real email address when buying a folder.
+ - You must use your real name and a real email address when registering a folder.
- This information will be publicly visible in root file (`root.scroll`).
- Limit 5 folders per person.
- The WWS discourages name squatting and content not edited by humans.
- If you maintain high quality folders and hit the limit, you can request a higher limit.
- Changes to your folder information may be made by pull request or communicated to your WWS rep via email.
- Folders must adhere to the Guidelines
- link gettingStarted.html Guidelines
+ link gettingStarted.html Guidelines
footer.scroll
Changed around line 1
+
gettingStarted.scroll
Changed around line 1
+ title World Wide Scroll Getting Started Guide
+
- title World Wide Scroll Getting Started Guide
-
header.scroll
Changed around line 1
- buildTxt
+ buildTxt
package.json
Changed around line 1
- "version": "0.8.0",
+ "version": "0.9.0",
Changed around line 9
+ "format": "scroll format",
readme.scroll
Changed around line 22: The WWS is like the World Wide Web, except:
- # Buy a Folder
+ # Register a Folder
- You can now buy a root folder in the World Wide Scroll for $100 for 10 years.
+ You can now register a root folder in the World Wide Scroll for $100 for 10 years.
- Funds pay for the development of the Scroll language and WWS standards.
+ When you register a folder in the WWS, you become that folder's "Editor".
- import stripeBuyButton.scroll
+ The Editor is the person responsible for updating the metadata about that folder.
- After you buy your root folder, check out the Getting Started Guide.
+ Registration funds go toward the development of the Scroll language ecosystem. A portion is also distributed to the "WWS Reps" who help onboard and maintain the community.
+
+ import stripeButton.scroll
+
+ After you register your root folder, check out the Getting Started Guide.
- import stripeBuyButton.scroll
+ import stripeButton.scroll
Changed around line 73: image wws.jpg
-
releaseNotes.scroll
Changed around line 1
+ buildConcepts releaseNotes.csv releaseNotes.json releaseNotes.tsv
+ buildMeasures releaseNotesMeasures.tsv
- buildConcepts releaseNotes.csv releaseNotes.json releaseNotes.tsv
- buildMeasures releaseNotesMeasures.tsv
Changed around line 18: import changes.parsers
+ šŸ“¦ 0.9.0 7/11/2024
+ šŸŽ‰ added descriptions to folders (max 7 words)
+ šŸŽ‰ nicer `wws list` output
+ āš ļø moved `snippets` parser from the `root.scroll` file to `wws.scroll` files.
+
root.scroll
Changed around line 5
+ descriptionParser
+ extends abstractStringMeasureParser
+ description What is this site about? Maximum 7 words.
+ float sortIndex 1.001
+
Changed around line 20: sourceParser
- ownerParser
+ editorParser
- description What is the real name of the owner of this folder?
+ description What is the real name of the editor of this folder?
- ownerEmailParser
+ editorEmailParser
- description What is the email address of the owner of this folder?
+ description What is the email address of the editor of this folder?
- wwsSnippetsParser
- crux snippets
- extends abstractStringMeasureParser
- description What is the group name (and optionally folder path) to the blog posts that should be included on a user's WWS front page?
- float sortIndex 1.3
-
Changed around line 55: transactionIdParser
+ description A language for scientists of all ages
- snippets blog/All
- owner Breck Yunits
+ editor Breck Yunits
Changed around line 66: rep Breck Yunits
+ description Breck's Blog
- snippets All
- owner Breck Yunits
+ editor Breck Yunits
Changed around line 77: rep Breck Yunits
+ description A Programming Language DataBase
- snippets blog/All
- owner Breck Yunits
+ editor Breck Yunits
Changed around line 88: rep Breck Yunits
+ description Datasets about Cancer
- snippets blog/All
- owner Breck Yunits
+ editor Breck Yunits
- transactionId pm_1PQz7LJktJxKl0r5x39CYvIV
+ transactionId pm_1PQz7LJktJxKl0r5x39CYvIV
settings.parsers
Changed around line 1
+ wwsSubfolderParser
+ crux subfolder
+ extends abstractStringMeasureParser
+ description What is the name and URL to the source repo of a subfolder?
+ float sortIndex 1.3
+ cells keywordCell anyCell urlCell
+
+ wwsSnippetsParser
+ crux snippets
+ extends abstractStringMeasureParser
+ description What is the group name (and optionally folder path) to the blog posts that should be included on a user's WWS front page?
+ float sortIndex 1.3
stripeButton.scroll
wws.js
Changed around line 7: const fs = require("fs")
+ const { TreeNode } = require("scrollsdk/products/TreeNode.js")
Changed around line 123: wwsSnippetsParser
- .filter(concept => concept.snippets)
- .map(concept => concept.id + "/" + concept.snippets)
+ .map(concept => {
+ const settings = this.getFolderSettings(concept.id)
+ const snippets = settings.get("snippets")
+ if (!snippets) return ""
+ return concept.id + "/" + snippets
+ })
+ .filter(i => i)
Changed around line 171: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- this.folders.forEach(concept => this.log((concept.fetched ? "āœ… " : "ā–¢ ") + concept.id))
+ const table = new TreeNode(
+ this.folders.map(concept => {
+ const { fetched, id, description } = concept
+ return {
+ " ": fetched ? "šŸŸ©" : "ā¬œļø",
+ Folder: id,
+ Description: description
+ }
+ })
+ )
+ this.log(`There are currently ${this.folders.length} folders in the World Wide Scroll.`)
+ this.log("")
+ this.log(table.toFormattedTable())
+ this.log("")
+ }
+
+ getFolderSettings(folderName) {
+ const { wwsDir } = this
+ const rootFolder = path.join(wwsDir, folderName)
+ const wwsFile = path.join(rootFolder, "wws.scroll")
+ if (!Disk.exists(wwsFile)) return new TreeNode()
+ return new TreeNode(Disk.read(wwsFile))
Changed around line 202: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- const wwsFile = path.join(rootFolder, "wws.scroll")
Changed around line 212: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- // fetch subfolders
- if (Disk.exists(wwsFile)) {
- // subfolder wws https://github.com/breck7/wws
- Disk.read(wwsFile)
- .trim()
- .split("\n")
- .forEach(line => {
- const words = line.trim().split(" ")
- if (words.length !== 3 || words[0] !== "subfolder") {
- console.log(`Error fetching subfolder: "${line}"`)
- return
- }
- const subfolderName = sanitizeFolderName(words[1])
- const subfolder = path.join(rootFolder, subfolderName)
- console.log(`Updating subfolder '${subfolderName}'`)
- if (!Disk.exists(subfolder)) {
- Disk.mkdir(subfolder)
- require("child_process").execSync(`git clone --depth 1 --branch wws ${words[2]} ${subfolder}`)
- } else require("child_process").execSync(`cd ${subfolder} && git pull origin wws`)
- })
- }
+ const settingsTree = this.getFolderSettings(folder.id)
+ settingsTree
+ .filter(node => node.getLine().startsWith("subfolder"))
+ .forEach(subfolder => {
+ const subfolderName = sanitizeFolderName(subfolder.words[1])
+ const subfolderPath = path.join(rootFolder, subfolderName)
+ const sourceRepo = subfolder.words[2]
+ console.log(`Updating subfolder '${subfolderName}'`)
+ if (!Disk.exists(subfolderPath)) {
+ Disk.mkdir(subfolderPath)
+ require("child_process").execSync(`git clone --depth 1 --branch wws ${sourceRepo} ${subfolderPath}`)
+ } else require("child_process").execSync(`cd ${subfolderPath} && git pull origin wws`)
+ })
Breck Yunits
Breck Yunits
6 months ago
Version 0.8.0. Now with subfolders
package.json
Changed around line 1
- "version": "0.7.0",
+ "version": "0.8.0",
releaseNotes.scroll
Changed around line 18: import changes.parsers
- šŸ“¦ 0.7.0 7/10/2024s
+ šŸ“¦ 0.8.0 7/10/2024
+ šŸŽ‰ added new concept of subfolders
+
+ šŸ“¦ 0.7.0 7/10/2024
- šŸŽ‰ moved site registry to `root.scroll`
+ šŸŽ‰ moved site registry to `root.scroll`
wws.js
Changed around line 16: const WWS_VERSION = packageJson.version
+ const sanitizeFolderName = name => name.toLowerCase().replace(/[^a-z0-9._]/g, "")
+
Changed around line 173: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- const conceptDir = path.join(wwsDir, folder.id)
+ const rootFolder = path.join(wwsDir, folder.id)
- if (!Disk.exists(conceptDir)) {
+ const wwsFile = path.join(rootFolder, "wws.scroll")
+ if (!Disk.exists(rootFolder)) {
- Disk.mkdir(conceptDir)
+ Disk.mkdir(rootFolder)
- require("child_process").execSync(`git clone --depth 1 --branch wws ${gitSource} ${conceptDir}`)
+ require("child_process").execSync(`git clone --depth 1 --branch wws ${gitSource} ${rootFolder}`)
- require("child_process").execSync(`cd ${conceptDir} && git pull`)
+ require("child_process").execSync(`cd ${rootFolder} && git pull origin wws`)
+ }
+ // fetch subfolders
+ if (Disk.exists(wwsFile)) {
+ // subfolder wws https://github.com/breck7/wws
+ Disk.read(wwsFile)
+ .trim()
+ .split("\n")
+ .forEach(line => {
+ const words = line.trim().split(" ")
+ if (words.length !== 3 || words[0] !== "subfolder") {
+ console.log(`Error fetching subfolder: "${line}"`)
+ return
+ }
+ const subfolderName = sanitizeFolderName(words[1])
+ const subfolder = path.join(rootFolder, subfolderName)
+ console.log(`Updating subfolder '${subfolderName}'`)
+ if (!Disk.exists(subfolder)) {
+ Disk.mkdir(subfolder)
+ require("child_process").execSync(`git clone --depth 1 --branch wws ${words[2]} ${subfolder}`)
+ } else require("child_process").execSync(`cd ${subfolder} && git pull origin wws`)
+ })
Breck Yunits
Breck Yunits
6 months ago
Version 0.7.0
changes.parsers
Changed around line 1
+ // Changes: A Mini-Language for Change Logs.
+
+ versionParser
+ crux šŸ“¦
+ cells keywordCell semanticVersionCell dateCell
+ description What is the semantic version number?
+ extends h1Parser
+ // Todo: mixins in Parsers would make this easier.
+ boolean isMeasure true
+ boolean isMeasureRequired true
+ boolean isConceptDelimiter true
+ float sortIndex 1
+ javascript
+ get measureValue() {
+ return this.getWord(1)
+ }
+ measureName = "version"
+
+ bugFixParser
+ crux šŸ„
+ extends abstractCustomListItemParser
+ newFeatureParser
+ crux šŸŽ‰
+ extends abstractCustomListItemParser
+ breakingChangeParser
+ crux āš ļø
+ extends abstractCustomListItemParser
+ styleTweakParser
+ crux šŸŽØ
+ extends abstractCustomListItemParser
+
+ releaseDateParser
+ extends abstractMeasureParser
+ boolean isMeasureRequired true
+ boolean isComputed true
+ float sortIndex 1.1
+ javascript
+ computeValue(concept) {
+ return concept.nodeAt(0).getWord(2)
+ }
+
+ abstractSummaryParser
+ extends abstractMeasureParser
+ boolean isComputed true
+ float sortIndex 1.2
+
+ bugFixesParser
+ extends abstractSummaryParser
+ description How many bug fixes in this release?
+ javascript
+ computeValue(concept) {
+ return concept.findNodes("šŸ„").length
+ }
+
+ newFeaturesParser
+ extends abstractSummaryParser
+ description How many new features in this release?
+ javascript
+ computeValue(concept) {
+ return concept.findNodes("šŸŽ‰").length
+ }
+
+ breakingChangesParser
+ extends abstractSummaryParser
+ description How many breaking changes in this release?
+ javascript
+ computeValue(concept) {
+ return concept.findNodes("āš ļø").length
+ }
finePrint.scroll
Changed around line 1
- - A purchase gives you the rights to choose one unique unclaimed alpha-numeric id in the World Wide Scroll for ten years, renewal rights, and update rights to the metadata for that folder, as defined in this file.
+ - A purchase gives you the rights to control a number of lines in `root.scroll`, including choosing one unique unclaimed alpha-numeric id which is the name of your root folder, as well as rights to update that folder information for ten years and renewal rights.
- At any time you may change your folder name to a different unclaimed alpha-numeric id.
- All updates are subject to approval by the World Wide Scroll reps.
- WWS Folders can only be reserved by individuals.
- // not corporations
+ // An individual can register on behalf of an organization
- The WWS is for high quality, non-anonymous content.
- You must use your real name and a real email address when buying a folder.
- - This information will be publicly visible in this file (`wws.scroll`).
+ - This information will be publicly visible in root file (`root.scroll`).
- Limit 5 folders per person.
- The WWS discourages name squatting and content not edited by humans.
- If you maintain high quality folders and hit the limit, you can request a higher limit.
footer.scroll
gettingStarted.scroll
Changed around line 5: title World Wide Scroll Getting Started Guide
- After you've purchased your folder, a WWS Rep will reach out to you via the email you provided at checkout to help onboard your site to your WWS folder.
+ After you've purchased your root folder, a WWS Rep will reach out to you via the email you provided at checkout to help onboard your site to your WWS folder.
Changed around line 17: The World Wide Scroll (WWS) is designed to be a more intelligent, offline, and h
- 3. *Leverage Git for Site Management*: Unlike the traditional web, the WWS uses Git for site transfers. Your site must be stored in a publicly accessible Git repository. Platforms like GitHub and GitLab offer free hosting for open-source projects. Your repo should have a branch named `wws` where your compiled site is written to.
+ 3. *Leverage Git for Site Management*: Unlike the traditional web, the WWS uses Git for site transfers. Your site must be stored in a publicly accessible Git repository. Platforms like GitHub and GitLab offer free hosting for open-source projects. Your repo should have a branch named `wws` where your compiled site is written to. ScrollHub (beta) is another fast option you could use.
+ http://hub.scroll.pub/ ScrollHub
package.json
Changed around line 1
- "version": "0.6.0",
+ "version": "0.7.0",
Changed around line 33
- "scroll-cli": "^101.3.0",
+ "scroll-cli": "^102.3.0",
readme.scroll
Changed around line 25: import clientInstall.scroll
- You can now buy a folder in the World Wide Scroll for $100 for 10 years.
+ You can now buy a root folder in the World Wide Scroll for $100 for 10 years.
- After you buy your folder, check out the Getting Started Guide.
+ After you buy your root folder, check out the Getting Started Guide.
- // Schema
-
- idParser
- extends abstractIdParser
-
- wwwParser
- extends abstractUrlMeasureParser
- description What is the URL to this folder on the World Wide Web?
- float sortIndex 1.01
-
- sourceParser
- extends abstractUrlMeasureParser
- description What is the URL to the source code for this folder?
- float sortIndex 1.02
-
- ownerParser
- // required
- extends abstractStringMeasureParser
- description What is the real name of the owner of this folder?
- float sortIndex 1.1
- ownerEmailParser
- // required
- crux email
- extends abstractStringMeasureParser
- description What is the email address of the owner of this folder?
- float sortIndex 1.11
-
- wwsSnippetsParser
- crux snippets
- extends abstractStringMeasureParser
- description What is the group name (and optionally folder path) to the blog posts that should be included on a user's WWS front page?
- float sortIndex 1.3
-
- registeredParser
- extends abstractStringMeasureParser
- description On what day was this folder name first registered?
- float sortIndex 1.3
-
- expiresParser
- extends abstractStringMeasureParser
- description On what day does this registration expire?
- float sortIndex 1.4
-
- repParser
- extends abstractStringMeasureParser
- description Which WWS rep onboarded this folder?
- float sortIndex 1.5
-
- transactionIdParser
- extends abstractStringMeasureParser
- description What is the payment transaction id for this purchase?
- float sortIndex 1.5
-
- // The World Wide Scroll
-
- id scroll
- www https://scroll.pub
- source https://github.com/breck7/scroll
- snippets blog/All
- owner Breck Yunits
- email breck7@gmail.com
- registered 6/12/2024
- expires 6/12/2034
- rep Breck Yunits
- transactionId pm_1PQxCOJktJxKl0r5l24p6Zwu
-
- id breck
- www https://breckyunits.com
- source https://github.com/breck7/breckyunits.com
- snippets All
- owner Breck Yunits
- email breck7@gmail.com
- registered 6/12/2024
- expires 6/12/2034
- rep Breck Yunits
- transactionId pm_1PQxCOJktJxKl0r5l24p6Zwu
-
- id pldb
- www https://pldb.io
- source https://github.com/breck7/pldb
- snippets blog/All
- owner Breck Yunits
- email breck7@gmail.com
- registered 6/12/2024
- expires 6/12/2034
- rep Breck Yunits
- transactionId pm_1PQxCOJktJxKl0r5l24p6Zwu
-
- id cancerdb
- www https://cancerdb.com
- source https://github.com/breck7/CancerDB
- snippets blog/All
- owner Breck Yunits
- email breck7@gmail.com
- registered 6/12/2024
- expires 6/12/2034
- rep Breck Yunits
- transactionId pm_1PQz7LJktJxKl0r5x39CYvIV
+ import root.scroll
Changed around line 52: endColumns
- Download the list of folders in the World Wide Scroll as:
+ Download the list of root folders in the World Wide Scroll as:
releaseNotes.scroll
Changed around line 1
+ title World Wide Scroll Release Notes
+
+ import header.scroll
+ printTitle
+ ## A list of what has changed in WWS releases.
+ buildConcepts releaseNotes.csv releaseNotes.json releaseNotes.tsv
+ buildMeasures releaseNotesMeasures.tsv
+
+ thinColumns 1
+ Download as CSV | TSV | JSON
+ link releaseNotes.csv CSV
+ link releaseNotes.tsv TSV
+ link releaseNotes.json JSON
+ endColumns
+
+
+ import changes.parsers
+
+ thinColumns
+
+ šŸ“¦ 0.7.0 7/10/2024s
+ šŸŽ‰ added release notes
+ šŸŽ‰ moved site registry to `root.scroll`
+ šŸŽ‰ updated Scroll
+
+ endColumns
+
+ import footer.scroll
root.scroll
Changed around line 1
+ // The World Wide Scroll Root File
+
+ // Schema
+
+ idParser
+ extends abstractIdParser
+
+ wwwParser
+ extends abstractUrlMeasureParser
+ description What is the URL to this folder on the World Wide Web?
+ float sortIndex 1.01
+
+ sourceParser
+ extends abstractUrlMeasureParser
+ description What is the URL to the source code for this folder?
+ float sortIndex 1.02
+
+ ownerParser
+ // required
+ extends abstractStringMeasureParser
+ description What is the real name of the owner of this folder?
+ float sortIndex 1.1
+ ownerEmailParser
+ // required
+ crux email
+ extends abstractStringMeasureParser
+ description What is the email address of the owner of this folder?
+ float sortIndex 1.11
+
+ wwsSnippetsParser
+ crux snippets
+ extends abstractStringMeasureParser
+ description What is the group name (and optionally folder path) to the blog posts that should be included on a user's WWS front page?
+ float sortIndex 1.3
+
+ registeredParser
+ extends abstractStringMeasureParser
+ description On what day was this folder name first registered?
+ float sortIndex 1.3
+
+ expiresParser
+ extends abstractStringMeasureParser
+ description On what day does this registration expire?
+ float sortIndex 1.4
+
+ repParser
+ extends abstractStringMeasureParser
+ description Which WWS rep onboarded this folder?
+ float sortIndex 1.5
+
+ transactionIdParser
+ extends abstractStringMeasureParser
+ description What is the payment transaction id for this purchase?
+ float sortIndex 1.5
+
+ // Root Folders
+
+ id scroll
+ www https://scroll.pub
+ source https://github.com/breck7/scroll
+ snippets blog/All
+ owner Breck Yunits
+ email breck7@gmail.com
+ registered 6/12/2024
+ expires 6/12/2034
+ rep Breck Yunits
+ transactionId pm_1PQxCOJktJxKl0r5l24p6Zwu
+
+ id breck
+ www https://breckyunits.com
+ source https://github.com/breck7/breckyunits.com
+ snippets All
+ owner Breck Yunits
+ email breck7@gmail.com
+ registered 6/12/2024
+ expires 6/12/2034
+ rep Breck Yunits
+ transactionId pm_1PQxCOJktJxKl0r5l24p6Zwu
+
+ id pldb
+ www https://pldb.io
+ source https://github.com/breck7/pldb
+ snippets blog/All
+ owner Breck Yunits
+ email breck7@gmail.com
+ registered 6/12/2024
+ expires 6/12/2034
+ rep Breck Yunits
+ transactionId pm_1PQxCOJktJxKl0r5l24p6Zwu
+
+ id cancerdb
+ www https://cancerdb.com
+ source https://github.com/breck7/CancerDB
+ snippets blog/All
+ owner Breck Yunits
+ email breck7@gmail.com
+ registered 6/12/2024
+ expires 6/12/2034
+ rep Breck Yunits
+ transactionId pm_1PQz7LJktJxKl0r5x39CYvIV
wws.js
Changed around line 147: viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
- const wwsFile = path.join(__dirname, "readme.scroll")
- const wws = new ScrollFile(Disk.read(wwsFile), wwsFile, scrollFs)
+ const rootFilePath = path.join(__dirname, "root.scroll")
+ const wws = new ScrollFile(Disk.read(rootFilePath), rootFilePath, scrollFs)
Breck Yunits
Breck Yunits
6 months ago
checkpoint
finePrint.scroll
Changed around line 10
- Limit 5 folders per person.
- The WWS discourages name squatting and content not edited by humans.
- If you maintain high quality folders and hit the limit, you can request a higher limit.
- - Changes to your folder information may be communicated to the WWS team via email and/or using future self-service software.
+ - Changes to your folder information may be made by pull request or communicated to your WWS rep via email.
+ - Folders must adhere to the Guidelines
+ link gettingStarted.html Guidelines
Breck Yunits
Breck Yunits
6 months ago
checkpoint
readme.scroll
Changed around line 16: The WWS is like the World Wide Web, except:
- *Intelligent.* Built not on HTML, but from the ground up in a simple, expandable language, designed for both humans and AIs.
- *Offline.* You download entire sites and browse completely offline locally, rather than fetching one page at a time.
- - *Pristine.* No ads, no paywalls, no trackers, no cookies, no copyright.
+ - *Pristine.* No ads, no paywalls, no trackers, no cookies, no copyright. The WWS and all content on it is public domain.
- *Human first.* Instead of anonymous domains the WWS has folders owned by verified humans.
- *Trustworthy.* Source code and change history behind every page.
Breck Yunits
Breck Yunits
6 months ago
fewer dependendies. smaller size. feedback from level27geek
clientInstall.scroll
Changed around line 3: importOnly
- npm install .
- npm install -g .
+ npm install --omit=dev
+ npm install --omit=dev -g .
Breck Yunits
Breck Yunits
7 months ago
Update Scroll
header.scroll
Changed around line 1
- buildText
+ buildTxt
+ buildHtml
package.json
Changed around line 1
- "version": "0.5.0",
+ "version": "0.6.0",
Changed around line 33
- "scroll-cli": "100.0.0",
+ "scroll-cli": "^101.3.0",
wws.js
Changed around line 92: class WWSCli {
+ buildHtml
Changed around line 110: endColumns
- extends snippetsParser
+ extends printSnippetsParser
Breck Yunits
Breck Yunits
7 months ago
Add client install instructions. Thanks NN
clientInstall.scroll
Changed around line 1
+ importOnly
+ # Install the WWS client
+ code
+ git clone https://github.com/breck7/wws
+ cd wws
+ npm install .
+ npm install -g .
+ wws list
+ # Fetch a few sites:
+ wws fetch scroll breck pldb
+ wws open
+
+ The WWS client currently requires Node.js. More clients coming soon.
+ https://nodejs.org/en Node.js
gettingStarted.scroll
Changed around line 32: If you need _any_ help with these guidelines, share your issue on github.com/bre
+ import clientInstall.scroll
+
readme.scroll
Changed around line 20: The WWS is like the World Wide Web, except:
- *Human first.* Instead of anonymous domains the WWS has folders owned by verified humans.
- *Trustworthy.* Source code and change history behind every page.
- # Try now
- code
- git clone https://github.com/breck7/wws
- cd wws
- npm install .
- npm install -g .
- wws list
- wws fetch scroll
- wws open
+ import clientInstall.scroll
Breck Yunits
Breck Yunits
7 months ago
Make getting started page a redirect. Thanks NN for feedback
finePrint.scroll
Changed around line 1
- A purchase gives you the rights to choose one unique unclaimed alpha-numeric id in the World Wide Scroll for ten years, renewal rights, and update rights to the metadata for that folder, as defined in this file.
- At any time you may change your folder name to a different unclaimed alpha-numeric id.
- - All updates are subject to approval by the World Wide Scroll editors.
+ - All updates are subject to approval by the World Wide Scroll reps.
- WWS Folders can only be reserved by individuals.
- The WWS is for high quality, non-anonymous content.
- - You must use your real name and a real email address when registering a folder.
+ - You must use your real name and a real email address when buying a folder.
- This information will be publicly visible in this file (`wws.scroll`).
- Limit 5 folders per person.
- The WWS discourages name squatting and content not edited by humans.
gettingStarted.scroll
Changed around line 1
- # Getting Started
+ import header.scroll
+ printTitle
- After you've placed your order, it's time to get your site ready for the WWS.
+ title World Wide Scroll Getting Started Guide
+
+ mediumColumns 1
+
+ After you've purchased your folder, a WWS Rep will reach out to you via the email you provided at checkout to help onboard your site to your WWS folder.
+
+ While you wait for their email, follow this guide to get your site ready for the World Wide Scroll.
Changed around line 15: The World Wide Scroll (WWS) is designed to be a more intelligent, offline, and h
- 2. *Open Source and Public Domain*: The WWS is dedicated to open-source, public domain content. Ensure that all content on your site complies with these principles.
+ 2. *Open Source and Public Domain*: The WWS is designed for a post-copyright world and all content on the WWS is open-source and public domain.
Changed around line 30: If you need _any_ help with these guidelines, share your issue on github.com/bre
- By adhering to these guidelines, youā€™ll help create a more intelligent, offline-first, and human-centric internet. Welcome to the World Wide Scroll!
+ By adhering to these guidelines, youā€™ll help create a more intelligent, offline-first, and human-centric internet. Welcome to the World Wide Scroll!
+
+ pageFooter
package.json
Changed around line 9
+ "open": "open index.html",
readme.scroll
Changed around line 30: code
- # Register a Folder
+ # Buy a Folder
Changed around line 39: Funds pay for the development of the Scroll language and WWS standards.
- import gettingStarted.scroll
+ After you buy your folder, check out the Getting Started Guide.
+ link gettingStarted.html Getting Started Guide
+
Changed around line 87: expiresParser
+ repParser
+ extends abstractStringMeasureParser
+ description Which WWS rep onboarded this folder?
+ float sortIndex 1.5
+
+ transactionIdParser
+ extends abstractStringMeasureParser
+ description What is the payment transaction id for this purchase?
+ float sortIndex 1.5
+
Changed around line 107: owner Breck Yunits
+ rep Breck Yunits
+ transactionId pm_1PQxCOJktJxKl0r5l24p6Zwu
Changed around line 118: owner Breck Yunits
+ rep Breck Yunits
+ transactionId pm_1PQxCOJktJxKl0r5l24p6Zwu
Changed around line 129: owner Breck Yunits
+ rep Breck Yunits
+ transactionId pm_1PQxCOJktJxKl0r5l24p6Zwu
Changed around line 140: owner Breck Yunits
+ rep Breck Yunits
+ transactionId pm_1PQz7LJktJxKl0r5x39CYvIV
Breck Yunits
Breck Yunits
7 months ago
checkpoint
package.json
Changed around line 33
- "scrollsdk": "^80.0.0"
+ "scrollsdk": "^80.1.1"
Breck Yunits
Breck Yunits
7 months ago
checkpoint
package.json
Changed around line 32
- "scroll-cli": "^99.1.0",
+ "scroll-cli": "100.0.0",
Breck Yunits
Breck Yunits
7 months ago
Start getting started guide
finePrint.scroll
Changed around line 1
+ # Fine Print
+ - A purchase gives you the rights to choose one unique unclaimed alpha-numeric id in the World Wide Scroll for ten years, renewal rights, and update rights to the metadata for that folder, as defined in this file.
+ - At any time you may change your folder name to a different unclaimed alpha-numeric id.
+ - All updates are subject to approval by the World Wide Scroll editors.
+ - WWS Folders can only be reserved by individuals.
+ // not corporations
+ - The WWS is for high quality, non-anonymous content.
+ - You must use your real name and a real email address when registering a folder.
+ - This information will be publicly visible in this file (`wws.scroll`).
+ - Limit 5 folders per person.
+ - The WWS discourages name squatting and content not edited by humans.
+ - If you maintain high quality folders and hit the limit, you can request a higher limit.
+ - Changes to your folder information may be communicated to the WWS team via email and/or using future self-service software.
gettingStarted.scroll
Changed around line 1
+ # Getting Started
+
+ After you've placed your order, it's time to get your site ready for the WWS.
+
+ # How to Get Your Site Ready for the World Wide Scroll
+ The World Wide Scroll (WWS) is designed to be a more intelligent, offline, and human-first alternative to the World Wide Web. As you prepare your site for the WWS, keep the following guidelines in mind:
+
+ 1. *Utilize the Scroll Language*: Scroll is the primary language of the WWS, designed to be simple and expandable for both humans and AIs. While you can use plain HTML, Markdown, or any language that compiles to HTML, using Scroll will streamline many other requirements. Learn more about Scroll at scroll.pub.
+ https://scroll.pub scroll.pub
+
+ 2. *Open Source and Public Domain*: The WWS is dedicated to open-source, public domain content. Ensure that all content on your site complies with these principles.
+
+ 3. *Leverage Git for Site Management*: Unlike the traditional web, the WWS uses Git for site transfers. Your site must be stored in a publicly accessible Git repository. Platforms like GitHub and GitLab offer free hosting for open-source projects. Your repo should have a branch named `wws` where your compiled site is written to.
+ https://github.com GitHub
+ https://gitlab.com GitLab
+
+ 4. *Design for Offline Use*: Your site should function fully offline. Avoid using external JavaScript, images, or assets that require an internet connection. Ensure all necessary files are included in your Git repo. For large files, such as videos, linking to external sites is acceptable, but avoid adding unnecessarily large files directly to your repo.
+
+ 5. *No Ads or Trackers*: While commercial sites and sponsorships are welcome on the WWS, any form of JavaScript trackers or advertising is prohibited. Ensure your site is free from ads and trackers to maintain the integrity and privacy of the WWS.
+
+ If you need _any_ help with these guidelines, share your issue on github.com/breck7/wws/issues or r/WorldWideScroll or Twitter.
+ https://www.reddit.com/r/WorldWideScroll/ r/WorldWideScroll
+ https://github.com/breck7/wws/issues github.com/breck7/wws/issues
+ https://twitter.com/breckyunits Twitter
+
+ By adhering to these guidelines, youā€™ll help create a more intelligent, offline-first, and human-centric internet. Welcome to the World Wide Scroll!
readme.scroll
Changed around line 35: The World Wide Scroll beta is live!
- Funds pay for the development of the Scroll language.
+ Funds pay for the development of the Scroll language and WWS standards.
- # Fine Print
- - A purchase entitles you to choose one unique unclaimed alpha-numeric id in the World Wide Scroll for ten years, and to make updates to the properties of that folder, as defined in this file.
- - At any time you may change your folder name to a different unclaimed alpha-numeric id.
- - All updates are subject to approval by the World Wide Scroll editors.
- - WWS Folders can only be reserved by individuals.
- // not corporations
- - The WWS is for high quality, non-anonymous content.
- - You must use your real name and a real email address when registering a folder.
- - This information will be publicly visible in this file (`wws.scroll`).
- - Limit 5 folders per person.
- - The WWS discourages name squatting and content not edited by humans.
- - If you maintain high quality folders and hit the limit, you can request a higher limit.
- - Changes to your folder information may be communicated to the WWS team via email and/or using future self-service software.
+ import gettingStarted.scroll
+ import finePrint.scroll
Breck Yunits
Breck Yunits
7 months ago
checkpoint
readme.scroll
Changed around line 18: The WWS is like the World Wide Web, except:
- *Offline.* You download entire sites and browse completely offline locally, rather than fetching one page at a time.
- *Pristine.* No ads, no paywalls, no trackers, no cookies, no copyright.
- *Human first.* Instead of anonymous domains the WWS has folders owned by verified humans.
- - *Trustworthy.* Source code behind every page.
+ - *Trustworthy.* Source code and change history behind every page.
Breck Yunits
Breck Yunits
7 months ago
checkpoint
readme.scroll
Changed around line 9: printTitle
- We believe every human deserves their own copy of humanity's best information.
+ To provide every human with their own copy of humanity's best information.
Breck Yunits
Breck Yunits
7 months ago
checkpoint
readme.scroll
Changed around line 8: printTitle
+ # Why build this?
+ We believe every human deserves their own copy of humanity's best information.
+
- *Intelligent.* Built not on HTML, but from the ground up in a simple, expandable language, designed for both humans and AIs.
Changed around line 20: The WWS is like the World Wide Web, except:
- *Human first.* Instead of anonymous domains the WWS has folders owned by verified humans.
- *Trustworthy.* Source code behind every page.
- # Why build this?
- Because every human deserves their own copy of humanity's best information.
-
Breck Yunits
Breck Yunits
7 months ago
checkpoint
readme.scroll
Changed around line 17: The WWS is like the World Wide Web, except:
- *Human first.* Instead of anonymous domains the WWS has folders owned by verified humans.
- *Trustworthy.* Source code behind every page.
- Every human deserves their own copy of humanity's best information.
+ # Why build this?
+ Because every human deserves their own copy of humanity's best information.
Breck Yunits
Breck Yunits
7 months ago
Add logo
favicon.ico
readme.scroll
Changed around line 159: printMeasures
+ # Logo
+ image wws.jpg
+
+
wws.jpg
Breck Yunits
Breck Yunits
7 months ago
checkpoint
readme.scroll
Changed around line 17: The WWS is like the World Wide Web, except:
- *Human first.* Instead of anonymous domains the WWS has folders owned by verified humans.
- *Trustworthy.* Source code behind every page.
- The mission of the WWS is to enable every child on earth to have their own copy of humanity's best information.
+ Every human deserves their own copy of humanity's best information.
Breck Yunits
Breck Yunits
7 months ago
Add mission statement
readme.scroll
Changed around line 17: The WWS is like the World Wide Web, except:
- *Human first.* Instead of anonymous domains the WWS has folders owned by verified humans.
- *Trustworthy.* Source code behind every page.
+ The mission of the WWS is to enable every child on earth to have their own copy of humanity's best information.
+
Breck Yunits
Breck Yunits
7 months ago
Added snippets. Version 0.5.0
package.json
Changed around line 1
- "version": "0.4.0",
+ "version": "0.5.0",
Changed around line 32
- "scroll-cli": "^99.0.0",
+ "scroll-cli": "^99.1.0",
readme.scroll
Changed around line 77: ownerParser
+ wwsSnippetsParser
+ crux snippets
+ extends abstractStringMeasureParser
+ description What is the group name (and optionally folder path) to the blog posts that should be included on a user's WWS front page?
+ float sortIndex 1.3
+
Changed around line 98: expiresParser
+ snippets blog/All
Changed around line 107: expires 6/12/2034
+ snippets All
Changed around line 116: expires 6/12/2034
+ snippets blog/All
Changed around line 125: expires 6/12/2034
+ snippets blog/All
wws.js
Changed around line 92: class WWSCli {
- thinColumns 1
- https://wws.scroll.pub WWS
+ https://wws.scroll.pub
- Folders saved locally to:
+ thinColumns 1
+ endColumns
+
+ thinColumns
+
+ wwsSnippetsParser
+ extends snippetsParser
+ crux snippets
+ javascript
+ makeSnippet(file, compileSettings) {
+ const path = require("path")
+ const folderName = file.folderPath.replace('${wwsDir}', "").split(path.sep)[1]
+ return super.makeSnippet(file, compileSettings).replace('

', '

~' + folderName + '
')

+ }
+
+ snippets ${this.fetchedFolders
+ .filter(concept => concept.snippets)
+ .map(concept => concept.id + "/" + concept.snippets)
+ .join(" ")}
+ limit 5
+
+ endColumns
+
+ thinColumns 1
+
Changed around line 135: ${this.fetchedFolders.map(concept => `- ${concept.id}\n link ${concept.id}/index
+ endColumns
+
Breck Yunits
Breck Yunits
7 months ago
checkpoint
readme.scroll
Changed around line 21: The WWS is like the World Wide Web, except:
+ npm install .
Breck Yunits
Breck Yunits
7 months ago
checkpoint
package.json
Changed around line 8
+ "build": "scroll build",
Breck Yunits
Breck Yunits
7 months ago
checkpoint
package.json
Changed around line 8
- "build": "scroll list | scroll build",
- "open": "open index.html",
Breck Yunits
Breck Yunits
7 months ago
Version 0.4.0
header.scroll
Changed around line 11: gazetteCss
- keyboardNav
package.json
Changed around line 1
- "version": "0.3.0",
+ "version": "0.4.0",
- "test": "scroll list | scroll test; node wws.test.js",
+ "test": "node wws.test.js",
Changed around line 33
- "scroll-cli": "^98.0.2",
+ "scroll-cli": "^99.0.0",
readme.scroll
Changed around line 19: The WWS is like the World Wide Web, except:
- npm install -g scroll-cli
- wws init
- wws fetch
+ git clone https://github.com/breck7/wws
+ cd wws
+ npm install -g .
+ wws list
+ wws fetch scroll
wws.js
Changed around line 88: class WWSCli {
- const content = `title The World Wide Scroll
+ const content = `title Your World Wide Scroll
+ WWS version ${WWS_VERSION}
+ https://wws.scroll.pub WWS
+ style text-align:center;
+
+ import ../header.scroll
+
+ Folders saved locally to:
+
+ code
+ ${wwsDir}
+
+ expander
+
+ pageFooter
+ viewSourceUrl https://github.com/breck7/wws/blob/main/wws.js
Breck Yunits
Breck Yunits
7 months ago
Version 0.3.0
.gitignore
Changed around line 6
- .DS_Store
+ .DS_Store
+ wws/
commands.scroll
Changed around line 1
+ // This defines the minimum commands that a client should have.
+
+ // Schema
+ idParser
+ extends abstractIdParser
+
+ commandDescriptionParser
+ crux description
+ extends abstractStringMeasureParser
+ description What does this command do?
+ float sortIndex 1.3
+
+ // Commands
+ id fetch
+ description If no params provided, fetch all folders previously fetched. If folder names provided, fetch those folders.
+
+ id help
+ description Print the available commands.
+
+ id where
+ description Print where WWS folders are stored.
+
+ id list
+ description List all of the available folders and whether they've been fetched or not.
+
+ id open
+ description Open wws/index.html
package.json
Changed around line 1
- "version": "0.2.0",
+ "version": "0.3.0",
readme.scroll
Changed around line 121: expires 6/12/2034
- Art. Calmness. Courage. Freedom. Intelligence. Laughter. Love. Science. Truth.
+ Art. Calmness. Courage. Freedom. Fun. Intelligence. Laughter. Love. Science. Truth.
wws.js
Changed around line 8: const fs = require("fs")
+ const packageJson = require("./package.json")
- const WWS_VERSION = "0.0.1"
+ // Constants
+ const WWS_VERSION = packageJson.version
Changed around line 20: class WWSCli {
- const command = args[0] // Note: we don't take any parameters on purpose. Simpler UX.
+ const command = args[0]
- if (this[commandName]) return userIsPipingInput ? this._runCommandOnPipedStdIn(commandName) : this[commandName](process.cwd())
+ if (this[commandName]) return userIsPipingInput ? this._runCommandOnPipedStdIn(commandName) : this[commandName](args.slice(1))
Changed around line 45: class WWSCli {
- this[commandName](process.cwd())
+ this[commandName]()
Changed around line 69: class WWSCli {
- async initCommand(cwd) {
- // Split cwd by dir separator and see if it already contains a "wws" part:
- const wwsCache = this._getWWSDir(cwd)
- if (wwsCache) return this.log(`\nšŸ‘ WWS already initialized: '${wwsCache}'.`)
+ get wwsDir() {
+ return path.join(__dirname, "wws")
+ }
+
+ init() {
+ const { wwsDir } = this
+ if (Disk.exists(wwsDir)) return true
- // If not, create a new folder and initialize it:
- const newCwd = path.join(cwd, "wws")
- Disk.mkdir(newCwd)
+ Disk.mkdir(wwsDir)
- Disk.writeObjectToDisk(newCwd, initFolder)
- return this.log(`\nšŸ‘ Initialized new WWS cache in '${newCwd}'.`)
+ Disk.writeObjectToDisk(wwsDir, initFolder)
+ return this.log(`\nšŸ‘ Initialized new WWS cache in '${wwsDir}'.`)
- async buildIndexPage(cwd) {
- const indexFile = path.join(cwd, "index.scroll")
+ async buildIndexPage() {
+ const { wwsDir } = this
+ const indexFile = path.join(wwsDir, "index.scroll")
- ${this.folders.map(concept => `- ${concept.id}\n link ${concept.id}/index.html`).join("\n")}
+ # Fetched
+ ${this.fetchedFolders.map(concept => `- ${concept.id}\n link ${concept.id}/index.html`).join("\n")}
+
+ # Unfetched
+ ${this.unfetchedFolders.map(concept => `- ${concept.id}`).join("\n")}
- await scrollCli.buildCommand(cwd)
- }
-
- _getWWSDir(cwd) {
- // first check if this folder contains a folder named "wws":
- if (Disk.exists(path.join(cwd, "wws"))) return path.join(cwd, "wws")
- const parts = cwd.split(path.sep)
- const indexOfWws = parts.indexOf("wws")
- if (indexOfWws === -1) return null
- return parts.slice(0, indexOfWws + 1).join(path.sep)
+ await scrollCli.buildCommand(wwsDir)
- const wwsFile = path.join(__dirname, "wws.scroll")
+ const { wwsDir } = this
+ const wwsFile = path.join(__dirname, "readme.scroll")
- return wws.concepts
+ const { concepts } = wws
+ concepts.forEach(concept => (concept.fetched = Disk.exists(path.join(wwsDir, concept.id))))
+ return concepts
+ }
+
+ get fetchedFolders() {
+ return this.folders.filter(concept => concept.fetched)
+ }
+
+ get unfetchedFolders() {
+ return this.folders.filter(concept => !concept.fetched)
- this.folders.forEach(concept => this.log(concept.id))
+ this.folders.forEach(concept => this.log((concept.fetched ? "āœ… " : "ā–¢ ") + concept.id))
- fetchScroll(folderName, dir) {
+ fetchScroll(folderName) {
+ const { wwsDir } = this
- const conceptDir = path.join(dir, folder.id)
+ const conceptDir = path.join(wwsDir, folder.id)
Changed around line 144: ${this.folders.map(concept => `- ${concept.id}\n link ${concept.id}/index.html`)
- fetchCommand(cwd) {
- const dir = this._getWWSDir(cwd)
- if (!dir) return this.log(`\nšŸ‘Ž No WWS cache found in '${cwd}'.`)
- this.folders.forEach(concept => this.fetchScroll(concept.id, dir))
- this.buildIndexPage(dir)
+ fetchCommand(folderNames) {
+ this.init()
+ const { wwsDir, fetchedFolders } = this
+ if (!folderNames.length) fetchedFolders.forEach(concept => this.fetchScroll(concept.id))
+ else folderNames.forEach(folderName => this.fetchScroll(folderName))
+ this.buildIndexPage()
- openCommand(cwd) {
+ openCommand() {
- const dir = this._getWWSDir(cwd)
- if (!dir) return this.log(`\nšŸ‘Ž No WWS cache found in '${cwd}'.`)
- const indexHtml = path.join(dir, "index.html")
+ this.init()
+ const { wwsDir } = this
+ const indexHtml = path.join(wwsDir, "index.html")
+ whereCommand() {
+ return this.log(this.wwsDir)
+ }
+
Breck Yunits
Breck Yunits
7 months ago
checkpoint
header.scroll
Changed around line 1
+ buildText
Changed around line 11: gazetteCss
- buildText
- keyboardNav
+ keyboardNav
readme.scroll
Changed around line 1
- title The World Wide Scroll
+ permalink index.html
+ title The World Wide Scroll
Changed around line 147: printConcepts
-
Breck Yunits
Breck Yunits
7 months ago
checkpoint
workflows/buildAndDeployScroll.yaml
Changed around line 1
+ # Adapted from https://github.com/JamesIves/github-pages-deploy-action
+ name: Build and Deploy Scroll
+ on:
+ push:
+ branches:
+ - main
+ jobs:
+ build-and-deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout šŸ›Žļø
+ uses: actions/checkout@v2.3.1
+ - name: Install and Build
+ run: |
+ rm .gitignore
+ npm install -g scroll-cli --production
+ npm run build
+ - name: Deploy šŸš€
+ uses: JamesIves/github-pages-deploy-action@4.1.4
+ with:
+ branch: wws # The branch the action should deploy to.
+ folder: .
workflows/didTheTestsPass.yml
Changed around line 1
+ name: didTheTestsPass
+
+ on:
+ push:
+ branches: ain]
+ pull_request:
+ branches: ain]
+
+ jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [16.x, 18.x]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v1
+ with:
+ node-version: ${{ matrix.node-version }}
+ - run: npm install
+ - run: npm run test
+ # - run: npm run coverage
package.json
Changed around line 7
- "test": "node wws.test.js"
+ "test": "scroll list | scroll test; node wws.test.js",
+ "build": "scroll list | scroll build",
+ "open": "open index.html",
+ "up": "npm install scroll-cli@latest"
Breck Yunits
Breck Yunits
7 months ago
checkpoint
.gitignore
Changed around line 1
+ *.html
+ *.txt
+ *.json
+ *.csv
+ *.tsv
+ *.rss
+ *.xml
+ node_modules/
+ .DS_Store
header.scroll
Changed around line 1
+ importOnly
+ baseUrl https://wws.scroll.pub/
+ downloadUrl https://github.com/breck7/wws/archive/refs/heads/wws.zip
+ email wws@scroll.pub
+ git https://github.com/breck7/wws
+ viewSourceBaseUrl https://github.com/breck7/wws/blob/main
+
+ metaTags
+ gazetteCss
+ pageHeader
+ copyButtons
+ css html {font-family: "SF Pro", "Helvetica Neue", "Segoe UI", "Arial"; font-size: var(--base-font-size, 14px);}
+ buildText
+ keyboardNav
package.json
Changed around line 1
+ {
+ "name": "wws",
+ "version": "0.2.0",
+ "description": "The World Wide Scroll",
+ "main": "wws.js",
+ "engines": {
+ "node": ">=16.0"
+ },
+ "scripts": {
+ "test": "node wws.test.js"
+ },
+ "bin": {
+ "wws": "./wws.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/breck7/wws.git"
+ },
+ "author": "Breck Yunits",
+ "prettier": {
+ "parser": "babel",
+ "useTabs": false,
+ "tabWidth": 2,
+ "semi": false,
+ "printWidth": 240,
+ "trailingComma": "none",
+ "arrowParens": "avoid",
+ "quoteProps": "as-needed"
+ },
+ "homepage": "https://wws.scroll.pub",
+ "dependencies": {
+ "minimist": "^1.2.8",
+ "scroll-cli": "^98.0.2",
+ "scrollsdk": "^80.0.0"
+ },
+ "devDependencies": {
+ "tap": "^18.7.2"
+ }
+ }
readme.scroll
Changed around line 1
+ title The World Wide Scroll
+ buildConcepts wws.csv wws.json wws.tsv
+ buildMeasures wwsMeasures.tsv
+
+ import header.scroll
+ printTitle
+
+ mediumColumns 1
+
+ # What is the World Wide Scroll (WWS)?
+ The WWS is like the World Wide Web, except:
+ - *Intelligent.* Built not on HTML, but from the ground up in a simple, expandable language, designed for both humans and AIs.
+ https://scroll.pub simple, expandable language
+ - *Offline.* You download entire sites and browse completely offline locally, rather than fetching one page at a time.
+ - *Pristine.* No ads, no paywalls, no trackers, no cookies, no copyright.
+ - *Human first.* Instead of anonymous domains the WWS has folders owned by verified humans.
+ - *Trustworthy.* Source code behind every page.
+
+ # Try now
+ code
+ npm install -g scroll-cli
+ wws init
+ wws fetch
+ wws open
+
+ # Register a Folder
+ The World Wide Scroll beta is live!
+
+ You can now buy a folder in the World Wide Scroll for $100 for 10 years.
+
+ Funds pay for the development of the Scroll language.
+
+ import stripeBuyButton.scroll
+
+ # Fine Print
+ - A purchase entitles you to choose one unique unclaimed alpha-numeric id in the World Wide Scroll for ten years, and to make updates to the properties of that folder, as defined in this file.
+ - At any time you may change your folder name to a different unclaimed alpha-numeric id.
+ - All updates are subject to approval by the World Wide Scroll editors.
+ - WWS Folders can only be reserved by individuals.
+ // not corporations
+ - The WWS is for high quality, non-anonymous content.
+ - You must use your real name and a real email address when registering a folder.
+ - This information will be publicly visible in this file (`wws.scroll`).
+ - Limit 5 folders per person.
+ - The WWS discourages name squatting and content not edited by humans.
+ - If you maintain high quality folders and hit the limit, you can request a higher limit.
+ - Changes to your folder information may be communicated to the WWS team via email and/or using future self-service software.
+
+ // Schema
+
+ idParser
+ extends abstractIdParser
+
+ wwwParser
+ extends abstractUrlMeasureParser
+ description What is the URL to this folder on the World Wide Web?
+ float sortIndex 1.01
+
+ sourceParser
+ extends abstractUrlMeasureParser
+ description What is the URL to the source code for this folder?
+ float sortIndex 1.02
+
+ ownerParser
+ // required
+ extends abstractStringMeasureParser
+ description What is the real name of the owner of this folder?
+ float sortIndex 1.1
+ ownerEmailParser
+ // required
+ crux email
+ extends abstractStringMeasureParser
+ description What is the email address of the owner of this folder?
+ float sortIndex 1.11
+
+ registeredParser
+ extends abstractStringMeasureParser
+ description On what day was this folder name first registered?
+ float sortIndex 1.3
+
+ expiresParser
+ extends abstractStringMeasureParser
+ description On what day does this registration expire?
+ float sortIndex 1.4
+
+ // The World Wide Scroll
+
+ id scroll
+ www https://scroll.pub
+ source https://github.com/breck7/scroll
+ owner Breck Yunits
+ email breck7@gmail.com
+ registered 6/12/2024
+ expires 6/12/2034
+
+ id breck
+ www https://breckyunits.com
+ source https://github.com/breck7/breckyunits.com
+ owner Breck Yunits
+ email breck7@gmail.com
+ registered 6/12/2024
+ expires 6/12/2034
+
+ id pldb
+ www https://pldb.io
+ source https://github.com/breck7/pldb
+ owner Breck Yunits
+ email breck7@gmail.com
+ registered 6/12/2024
+ expires 6/12/2034
+
+ id cancerdb
+ www https://cancerdb.com
+ source https://github.com/breck7/CancerDB
+ owner Breck Yunits
+ email breck7@gmail.com
+ registered 6/12/2024
+ expires 6/12/2034
+
+ import stripeBuyButton.scroll
+
+ # Values
+ Art. Calmness. Courage. Freedom. Intelligence. Laughter. Love. Science. Truth.
+
+ These are the words that guide The World Wide Scroll (WWS).
+
+ ****
+
+ endColumns
+
+ wideColumns 1
+
+ # Download
+ Download the list of folders in the World Wide Scroll as:
+
+ * CSV | TSV | JSON
+ link wws.csv CSV
+ link wws.tsv TSV
+ link wws.json JSON
+
+ printMeasures
+
+ # Folders
+ printConcepts
+
+ endColumns
+
+ pageFooter
+
stripeBuyButton.scroll
Changed around line 1
+ importOnly
+
+

+
+
+
+
+ buy-button-id="buy_btn_1PRkerJktJxKl0r5U4j5gV9E"
+ publishable-key="pk_live_51IQx1tJktJxKl0r5YOhZM9Th6S8zhR2DXlUlJFIuLSrgzu3nfkKTx96ym19ihYYIeEnf3daa1TCPgDt0To2qt4Qk00TzjPmP9c">
+
+
+

wws.js
Changed around line 1
+ #! /usr/bin/env node
+
+ // NPM ecosystem includes
+ const parseArgs = require("minimist")
+ const path = require("path")
+ const fs = require("fs")
+
+ // Scroll Notation Includes
+ const { Disk } = require("scrollsdk/products/Disk.node.js")
+ const { ScrollCli, ScrollFile, ScrollFileSystem } = require("scroll-cli")
+
+ const WWS_VERSION = "0.0.1"
+
+ const scrollFs = new ScrollFileSystem()
+ const scrollCli = new ScrollCli().silence()
+
+ class WWSCli {
+ CommandFnDecoratorSuffix = "Command"
+
+ executeUsersInstructionsFromShell(args = [], userIsPipingInput = process.platform !== "win32" && fs.fstatSync(0).isFIFO()) {
+ const command = args[0] // Note: we don't take any parameters on purpose. Simpler UX.
+ const commandName = `${command}${this.CommandFnDecoratorSuffix}`
+ if (this[commandName]) return userIsPipingInput ? this._runCommandOnPipedStdIn(commandName) : this[commandName](process.cwd())
+ else if (command) this.log(`No command '${command}'. Running help command.`)
+ else this.log(`No command provided. Running help command.`)
+ return this.helpCommand()
+ }
+
+ _runCommandOnPipedStdIn(commandName) {
+ let pipedData = ""
+ process.stdin.on("readable", function () {
+ pipedData += this.read() // todo: what's the lambda way to do this?
+ })
+ process.stdin.on("end", () => {
+ const folders = pipedData
+ .trim()
+ .split("\n")
+ .map(line => line.trim())
+ .filter(line => fs.existsSync(line))
+
+ folders.forEach(line => this[commandName](line))
+
+ if (folders.length === 0)
+ // Hacky to make sure this at least does something in all environments.
+ // process.stdin.isTTY is not quite accurate for pipe detection
+ this[commandName](process.cwd())
+ })
+ }
+
+ silence() {
+ this.verbose = false
+ return this
+ }
+
+ verbose = true
+
+ logIndent = 0
+ log(message) {
+ const indent = " ".repeat(this.logIndent)
+ if (this.verbose) console.log(indent + message)
+ return message
+ }
+
+ get _allCommands() {
+ return Object.getOwnPropertyNames(Object.getPrototypeOf(this))
+ .filter(word => word.endsWith(this.CommandFnDecoratorSuffix))
+ .sort()
+ }
+
+ async initCommand(cwd) {
+ // Split cwd by dir separator and see if it already contains a "wws" part:
+ const wwsCache = this._getWWSDir(cwd)
+ if (wwsCache) return this.log(`\nšŸ‘ WWS already initialized: '${wwsCache}'.`)
+
+ // If not, create a new folder and initialize it:
+ const newCwd = path.join(cwd, "wws")
+ Disk.mkdir(newCwd)
+ const initFolder = {
+ "index.scroll": `The World Wide Scroll\n`
+ }
+ Disk.writeObjectToDisk(newCwd, initFolder)
+ return this.log(`\nšŸ‘ Initialized new WWS cache in '${newCwd}'.`)
+ }
+
+ async buildIndexPage(cwd) {
+ const indexFile = path.join(cwd, "index.scroll")
+ const content = `title The World Wide Scroll
+ metaTags
+ gazetteCss
+ printTitle
+ thinColumns 1
+
+ ${this.folders.map(concept => `- ${concept.id}\n link ${concept.id}/index.html`).join("\n")}
+ `
+ Disk.write(indexFile, content)
+ await scrollCli.buildCommand(cwd)
+ }
+
+ _getWWSDir(cwd) {
+ // first check if this folder contains a folder named "wws":
+ if (Disk.exists(path.join(cwd, "wws"))) return path.join(cwd, "wws")
+ const parts = cwd.split(path.sep)
+ const indexOfWws = parts.indexOf("wws")
+ if (indexOfWws === -1) return null
+ return parts.slice(0, indexOfWws + 1).join(path.sep)
+ }
+
+ get folders() {
+ const wwsFile = path.join(__dirname, "wws.scroll")
+ const wws = new ScrollFile(Disk.read(wwsFile), wwsFile, scrollFs)
+ return wws.concepts
+ }
+
+ listCommand() {
+ this.folders.forEach(concept => this.log(concept.id))
+ }
+
+ fetchScroll(folderName, dir) {
+ const folder = this.folders.find(concept => concept.id === folderName)
+ if (!folder) return this.log(`\nšŸ‘Ž No folder '${folderName}' found.`)
+ // mkdir the folder if it doesn't exist:
+ const conceptDir = path.join(dir, folder.id)
+ const gitSource = folder.source
+ if (!Disk.exists(conceptDir)) {
+ this.log(`Fetching ${folderName}`)
+ Disk.mkdir(conceptDir)
+ // do a shallow clone of the built site (wws branch) into the folder:
+ require("child_process").execSync(`git clone --depth 1 --branch wws ${gitSource} ${conceptDir}`)
+ } else {
+ // update the shallow clone but still keep it shallow
+ this.log(`Updating ${folderName}`)
+ require("child_process").execSync(`cd ${conceptDir} && git pull`)
+ }
+ }
+
+ fetchCommand(cwd) {
+ const dir = this._getWWSDir(cwd)
+ if (!dir) return this.log(`\nšŸ‘Ž No WWS cache found in '${cwd}'.`)
+ this.folders.forEach(concept => this.fetchScroll(concept.id, dir))
+ this.buildIndexPage(dir)
+ }
+
+ openCommand(cwd) {
+ // Trigger the terminal to run "open index.html", opening the users web browser:
+ const dir = this._getWWSDir(cwd)
+ if (!dir) return this.log(`\nšŸ‘Ž No WWS cache found in '${cwd}'.`)
+ const indexHtml = path.join(dir, "index.html")
+ return require("child_process").exec(`open ${indexHtml}`)
+ }
+
+ helpCommand() {
+ this.log(`\nšŸŒŽšŸŒšŸ“œ WELCOME TO THE WWS (v${WWS_VERSION})`)
+ return this.log(`\nThis is the WWS help page.\n\nCommands you can run:\n\n${this._allCommands.map(comm => `šŸ–Œļø ` + comm.replace(this.CommandFnDecoratorSuffix, "")).join("\n")}\nā€‹ā€‹`)
+ }
+ }
+
+ if (module && !module.parent) new WWSCli().executeUsersInstructionsFromShell(parseArgs(process.argv.slice(2))._)
+
+ module.exports = { WWSCli }
wws.test.js
Changed around line 1
+ #! /usr/bin/env node
+
+ const tap = require("tap")
+ const fs = require("fs")
+ const path = require("path")
+ const { TestRacer } = require("scrollsdk/products/TestRacer.js")
+ const { WWSCli } = require("./wws.js")
+
+ const testTree = {}
+
+ testTree.basics = areEqual => {
+ // Arrange
+ const wws = new WWSCli()
+ // Act/Assert
+ areEqual(!!wws, true)
+ }
+
+ if (module && !module.parent) TestRacer.testSingleFile(__filename, testTree)
+
+ module.exports = { testTree }
Breck Yunits
Breck Yunits
7 months ago
Create CNAME
CNAME
Changed around line 1
+ wws.scroll.pub
Breck Yunits
Breck Yunits
7 months ago
Initial Commit. KYPY
readme.scroll