【问题标题】:Markdown Validator降价验证器
【发布时间】:2019-03-22 15:18:45
【问题描述】:

我正在将一个讨论论坛从 OSQA 迁移到 Discourse。我在这样做时遇到了一个问题。

由于它是一个编码相关主题的讨论论坛,因此大部分帖子都包含代码 sn-ps。许多作为初学者的用户没有正确格式化他们的代码,即在包含代码块时不要缩进,或者在开始代码块之前和结束代码块之后使用反引号。

现在,这种未格式化的代码 sn-p 在 OSQA 中有效,但在 Discourse 中无效。

Discourse 隐藏 <iostream> 很像 stackoverflow(也许将前者视为 HTML 标记?)。

此外,如果用户直接粘贴他/她的代码,则格式会在缩进开始后开始。

例子:

#include <stdio.h>

int main()
{
    // formatting starts from here as prinf("Hi"); is indented.
    // the first two statements are not formatted as they have not been indetned.
    printf("Hi");
    return 0;
}

我希望你们都明白这一点。它看起来很奇怪。让我添加一张图片以更清晰。

你看到我想说什么了吗?

现在,Discourse 将不允许发布此类帖子。但是导入的 20k+ 帖子呢?

如何检测帖子是否有适当的降价?请在这里帮助我:(

【问题讨论】:

  • 你是如何进行导入的?还是已经完成并且您注意到它们的格式错误? Rails 是如何参与其中的?

标签: ruby-on-rails markdown code-formatting discourse


【解决方案1】:

我认为这不是用户没有正确格式化他们的代码的问题,而是 OSQA 和 Discourse 有不同的格式化规则。将 OSQA 帖子导入 Discourse 时,您必须翻译其格式。

OSQA appears to be using Pegdown.

我们利用https://github.com/sirthias/pegdown 进行 Markdown 解析,并启用了以下功能:Extensions.ABBREVIATIONS | Extensions.FENCED_CODE_BLOCKS。我们还对协议和非协议 url 以及电子邮件地址进行自动链接。我们还支持自动获得语法高亮的@提及和标准代码块。

Discourse allows three formatsCommon Markdown 以及 BBCode 的子集以及 HTML。

您必须将格式从 OSQA 转换为 Discourse。 Discourse has import scripts for many different systems,但不是 OSQA。您可能希望使用现有脚本作为示例编写一个。

Discourse 隐藏起来很像 stackoverflow(也许将前者视为 HTML 标记?)。

这可能是因为 Discourse 允许使用 HTML。您必须escape all the HTML entities 才能让它们在 Discourse 中正确显示。

此外,如果用户直接粘贴他/她的代码,则格式会在缩进开始后开始。

为避免这种情况,replace the indentation with &amp;nbsp;

【讨论】:

    猜你喜欢
    • 2016-12-07
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多