bob*_*off 8 javascript markdown tokenize node.js ios
我正在构建一个iOS应用程序,其视图将来自markdown.
我的想法是能够将存储在MongoDB中的markdown解析为类似于以下内容的JSON对象:
{
"h1": "This is the heading",
"p" : "Heres the first paragraph",
"link": {
"text": "Text for link",
"url": "http://exampledomain.com",
}
}
Run Code Online (Sandbox Code Playgroud)
在服务器上,我正在运行Node.js,并且正在查看标记的模块,这些模块似乎是最受欢迎的模块.它让我可以访问Lexer,它标记了一些自定义对象的降价.但是当我查看对象时,它并没有标记链接.如果我继续将markdown解析为HTML,则检测到链接并且HTML看起来正确.
在查看了一些更多的模块,并且失败之后,我想也许我可以在客户端上执行此操作而发现MMMarkdown看起来很有希望,但是再次......在直接解析为HTML时工作正常,但是当介于两者之间时只是解析所谓的MMDocument的降价,它不包含Link类型的任何MMElement.
那么,我缺少的降价解析有什么基础吗?内联链接的lexing是否应该在第二轮中完成,或者其他什么?我无法理解它.
如果没有其他工作,我可能只是使用填充了来自解析的markdown的HTML的UIWebView,但是我们必须再次设计整个事情,但是使用CSS,我们已经没时间了,所以我们不能再提供双重工作.
小智 10
你看过https://github.com/evilstreak/markdown-js吗?
它似乎可以让您访问语法树.
例如:
var md = require( "markdown" ).markdown,
text = "Header\n---------------\n\n" +
"This is a paragraph\n\n" +
"This is [an example](http://example.com/ \"Title\") inline link.";
// parse the markdown into a tree and grab the link references
var tree = md.parse( text );
console.log(JSON.stringify(tree));
Run Code Online (Sandbox Code Playgroud)
产生
[
"markdown",
[
"header",
{
"level": 2
},
"Header"
],
[
"para",
"This is a paragraph"
],
[
"para",
"This is ",
[
"link",
{
"href": "http://example.com/",
"title": "Title"
},
"an example"
],
" inline link."
]
]
Run Code Online (Sandbox Code Playgroud)
虽然这个问题已经有很多年了,但我还是想稍微更新一下。
我发现的组合unified
和remark-parse
一个非常适合我的情况。安装这些包(使用npm、yarn、pnpm或你最喜欢的 js 包管理器)后,我写了一个小测试脚本如下:
const unified = require('unified');
const markdown = require('remark-parse');
const tokens = unified()
.use(markdown)
.parse('# Hello world');
console.log(tokens);
Run Code Online (Sandbox Code Playgroud)
这当然会生成一个令牌树并需要进一步处理。
也许这对偶然发现这个问题的其他人有用。
归档时间: |
|
查看次数: |
3073 次 |
最近记录: |