Skip to content

Conversation

@chvmvd
Copy link
Contributor

@chvmvd chvmvd commented Nov 23, 2025

Termコンポーネントを書くための[[用語]]記法を導入しました。この記法にした理由としては、Wikipediaなどでも使用されているようによく使われている直感的な記法であること、入力が極めて容易であること、将来的に記法を拡張する余地があることが挙げられます。

仕様は、TSDocの通りで、[[用語]]のように中身がテキストの場合、あるいは[[**用語**]]のように中身が単一のASTノードである場合のみ、正しくパースされます。

参考

@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Nov 23, 2025

Deploying utcode-learn with  Cloudflare Pages  Cloudflare Pages

Latest commit: 0913a74
Status: ✅  Deploy successful!
Preview URL: https://a1936672.utcode-learn.pages.dev
Branch Preview URL: https://add-remark-term.utcode-learn.pages.dev

View logs

@chvmvd chvmvd changed the base branch from main to add-typescript-support November 29, 2025 07:07
@chvmvd chvmvd force-pushed the add-remark-term branch 2 times, most recently from 5fdced0 to a0180af Compare November 29, 2025 07:16
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

「JavaScriptことはじめ」の節全体のみに、新しい記法を取り入れました。

import type { Nodes, Root, RootContent } from "mdast";
import { phrasing } from "mdast-util-phrasing";

const remarkTerm: Plugin<[], Root> = () => (tree) => transform(tree);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@@ -0,0 +1,114 @@
import type { Plugin } from "unified";
import type { Nodes, Root, RootContent } from "mdast";
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

continue;
}

if (!phrasing(innerElement)) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MdxJsxTextElement.childrenプロパティの型はArray<PhrasingContent>でありここで絞り込みをする必要があるため、mdast-util-phrasingパッケージのphrasing関数を使用しています。

cf. https://github.com/syntax-tree/mdast-util-mdx-jsx/blob/998d98d0aa29fe9ed12c636ddf1ed39f9a018096/readme.md#mdxjsxtextelement
cf. https://github.com/syntax-tree/mdast-util-phrasing

}
if (segmentedText.startsWith("[[")) {
transformedChildren.push({
type: "mdxJsxTextElement",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Termコンポーネントを表すASTのノードは、MdxJsxTextElementです。
https://github.com/syntax-tree/mdast-util-mdx-jsx/blob/998d98d0aa29fe9ed12c636ddf1ed39f9a018096/readme.md#mdxjsxtextelement

@@ -0,0 +1,116 @@
import type { Plugin } from "unified";
import type { Nodes, Root, RootContent } from "mdast";
import "mdast-util-mdx-jsx";
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@chvmvd chvmvd marked this pull request as ready for review November 30, 2025 03:57
Base automatically changed from add-typescript-support to main December 6, 2025 12:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants