From deb83701873f751f2b0674713f33bac4c7da9507 Mon Sep 17 00:00:00 2001
From: Oleg Baskakov
Date: Fri, 29 Mar 2024 21:24:30 -0700
Subject: [PATCH] wip
---
.../markdown/processing/MarkdownProcessor.kt | 4 +-
.../processing/TaskListItemPostProcessor.kt | 48 +++++++
.../processing/TaskListItemsExtension.kt | 38 ++++++
...rkdownProcessorDocumentParsingExtraTest.kt | 117 ++++++++++++++++++
.../alerts/GitHubAlertProcessorExtension.kt | 2 +-
.../alerts/GitHubAlertBlockExtensionTest.kt | 8 ++
6 files changed, 215 insertions(+), 2 deletions(-)
create mode 100644 markdown/core/src/main/kotlin/org/jetbrains/jewel/markdown/processing/TaskListItemPostProcessor.kt
create mode 100644 markdown/core/src/main/kotlin/org/jetbrains/jewel/markdown/processing/TaskListItemsExtension.kt
diff --git a/markdown/core/src/main/kotlin/org/jetbrains/jewel/markdown/processing/MarkdownProcessor.kt b/markdown/core/src/main/kotlin/org/jetbrains/jewel/markdown/processing/MarkdownProcessor.kt
index 5090de9c28..abb4b3d5ab 100644
--- a/markdown/core/src/main/kotlin/org/jetbrains/jewel/markdown/processing/MarkdownProcessor.kt
+++ b/markdown/core/src/main/kotlin/org/jetbrains/jewel/markdown/processing/MarkdownProcessor.kt
@@ -47,7 +47,9 @@ public class MarkdownProcessor(private val extensions: List
+ New! Join Foam community Discord for users and contributors!
+
+
+
+
+ ## Table of Contents
+
+ - [Foam](#foam)
+ - [Table of Contents](#table-of-contents)
+ - [How do I use Foam?](#how-do-i-use-foam)
+ - [What's in a Foam?](#whats-in-a-foam)
+ - [Getting started](#getting-started)
+ - [Features](#features)
+ - [Call To Adventure](#call-to-adventure)
+ - [Thanks and attribution](#thanks-and-attribution)
+ - [License](#license)
+
+ ## How do I use Foam?
+
+ **Foam** is a tool that supports creating relationships between thoughts and information to help you think better.
+
+ Whether you want to build a [Second Brain](https://www.buildingasecondbrain.com/) or a [Zettelkasten](https://zettelkasten.de/posts/overview/), write a book, or just get better at long-term learning, **Foam** can help you organise your thoughts if you follow these simple rules:
+
+ 1. Create a single **Foam** workspace for all your knowledge and research following the [Getting started](#getting-started) guide.
+ 2. Write your thoughts in markdown documents (I like to call them **Bubbles**, but that might be more than a little twee). These documents should be atomic: Put things that belong together into a single document, and limit its content to that single topic. ([source](https://zettelkasten.de/posts/overview/#principles))
+ 3. Use Foam's shortcuts and autocompletions to link your thoughts together with `[[wikilinks]]`, and navigate between them to explore your knowledge graph.
+ 4. Get an overview of your **Foam** workspace using a [[graph-visualization]] (⚠️ WIP), and discover relationships between your thoughts with the use of [[backlinking]].
+
+ Foam is a like a bathtub: _What you get out of it depends on what you put into it._
+
+ ## What's in a Foam?
+
+ Like the soapy suds it's named after, **Foam** is mostly air.
+
+ 1. The editing experience of **Foam** is powered by VS Code, enhanced by workspace settings that glue together [[recommended-extensions]] and preferences optimised for writing and navigating information.
+ 2. To back up, collaborate on and share your content between devices, Foam pairs well with [GitHub](http://github.com/).
+ 3. To publish your content, you can set it up to publish to [GitHub Pages](https://pages.github.com/), or to any website hosting platform like [Netlify](http://netlify.com/) or [Vercel](https://vercel.com).
+
+ > **Fun fact**: This documentation was researched, written and published using **Foam**.
+
+ ## Getting started
+
+ > ⚠️ Foam is still in preview. Expect the experience to be a little rough.
+
+ These instructions assume you have a GitHub account, and you have Visual Studio Code installed.
+
+ 1. Use the [foam-template project](https://github.com/foambubble/foam-template) to generate a new repository. If you're logged into GitHub, you can just hit this button:
+
+ Use this template
+
+ *If you want to keep your thoughts to yourself, remember to set the repository private, or if you don't want to use GitHub to host your workspace at all, choose [**Download as ZIP**](https://github.com/foambubble/foam-template/archive/master.zip) instead of **Use this template**.*
+
+ 2. [Clone the repository locally](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/cloning-a-repository) and open it in VS Code.
+
+ *Open the repository as a folder using the `File > Open...` menu item. In VS Code, "open workspace" refers to [multi-root workspaces](https://code.visualstudio.com/docs/editor/multi-root-workspaces).*
+
+ 3. When prompted to install recommended extensions, click **Install all** (or **Show Recommendations** if you want to review and install them one by one)
+
+ After setting up the repository, open `.vscode/settings.json` and edit, add or remove any settings you'd like for your Foam workspace.
+
+ * *If using a [multi-root workspace](https://code.visualstudio.com/docs/editor/multi-root-workspaces) as noted above, make sure that your **Foam** directory is first in the list. There are some settings that will need to be migrated from `.vscode/settings.json` to your `.code-workspace` file.*
+
+ To learn more about how to use **Foam**, read the [[recipes]].
+
+ Getting stuck in the setup? Read the [[frequently-asked-questions]].
+
+ Check our [issues on GitHub](http://github.com/foambubble/foam/issues) if you get stuck on something, and create a new one if something doesn't seem right!
+
+ ## Features
+
+ **Foam** doesn't have features in the traditional sense. Out of the box, you have access to all features of VS Code and all the [[recommended-extensions]] you choose to install, but it's up to you to discover what you can do with it!
+
+ ![Short video of Foam in use](assets/images/foam-navigation-demo.gif)
+
+ Head over to [[recipes]] for some useful patterns and ideas!
+
+ ## Call To Adventure
+
+ The goal of **Foam** is to be your personal companion on your quest for knowledge.
+
+ It's currently about "10% ready" relative to all the features I've thought of, but I've only thought of ~1% of the features it could have, and I'm excited to learn from others.
+
+ I am using it as my personal thinking tool. By making it public, I hope to learn from others not only how to improve Foam, but also to improve how I learn and manage information.
+
+ If that sounds like something you're interested in, I'd love to have you along on the journey.
+
+ - Read about our [[principles]] to understand Foam's philosophy and direction
+ - Read the [[contribution-guide]] guide to learn how to participate.
+ - Feel free to open [GitHub issues](https://github.com/foambubble/foam/issues) to give me feedback and ideas for new features.
+
+ ## Thanks and attribution
+
+ """.trimIndent()
+ )
+
+ /*
+ * Expected HTML:
+ * foo bar a
+ */
+ }
}
diff --git a/markdown/extension-gfm-alerts/src/main/kotlin/org/jetbrains/jewel/markdown/extensions/github/alerts/GitHubAlertProcessorExtension.kt b/markdown/extension-gfm-alerts/src/main/kotlin/org/jetbrains/jewel/markdown/extensions/github/alerts/GitHubAlertProcessorExtension.kt
index 31a0a4bda8..af1b376fca 100644
--- a/markdown/extension-gfm-alerts/src/main/kotlin/org/jetbrains/jewel/markdown/extensions/github/alerts/GitHubAlertProcessorExtension.kt
+++ b/markdown/extension-gfm-alerts/src/main/kotlin/org/jetbrains/jewel/markdown/extensions/github/alerts/GitHubAlertProcessorExtension.kt
@@ -72,7 +72,7 @@ private object GitHubAlertCommonMarkExtension : ParserExtension, TextContentRend
">\\s+\\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)]\\s*".toRegex(RegexOption.IGNORE_CASE)
override fun extend(parserBuilder: Builder) {
- parserBuilder.customBlockParserFactory { state, _ ->
+ parserBuilder.customBlockParserFactory { state, x ->
val line = state.line.content.substring(state.column)
val matchResult = AlertStartRegex.matchEntire(line)
diff --git a/markdown/extension-gfm-alerts/src/test/kotlin/org/jetbrains/jewel/markdown/extensions/github/alerts/GitHubAlertBlockExtensionTest.kt b/markdown/extension-gfm-alerts/src/test/kotlin/org/jetbrains/jewel/markdown/extensions/github/alerts/GitHubAlertBlockExtensionTest.kt
index 1b61bd84b0..8a51b3d1c5 100644
--- a/markdown/extension-gfm-alerts/src/test/kotlin/org/jetbrains/jewel/markdown/extensions/github/alerts/GitHubAlertBlockExtensionTest.kt
+++ b/markdown/extension-gfm-alerts/src/test/kotlin/org/jetbrains/jewel/markdown/extensions/github/alerts/GitHubAlertBlockExtensionTest.kt
@@ -68,8 +68,16 @@ class GitHubAlertBlockExtensionTest {
fun `should parse tip alert`() {
val rawMarkdown =
"""
+ |## Some other text
+ |
+ |text
+ |with *emphasis*
+ |many lines
+ |
|> [!TIP]
|> Optional information to help a user be more successful.
+ |
+ |
"""
.trimMargin()
val parsed = parser.parse(rawMarkdown)