跳转到主要内容

Datasette渲染Markdown插件

项目描述

datasette-render-markdown

PyPI Changelog Tests License

Datasette 插件,用于渲染Markdown。

安装

在Datasette相同的环境中安装此插件,以启用此新功能

datasette install datasette-render-markdown

用法

您可以使用metadata.json文件中的插件配置显式列出希望将其视为Markdown的列。

添加一个"datasette-render-markdown"配置块,并使用"columns"键列出您希望将其视为Markdown值的列

{
    "plugins": {
        "datasette-render-markdown": {
            "columns": ["body"]
        }
    }
}

这将导致任何表中的body列被视为Markdown并安全地使用Python-Markdown渲染。生成的HTML随后通过Bleach运行,以避免XSS安全问题的风险。

将此保存到metadata.json,然后使用--metadata标志运行Datasette以加载此配置

$ datasette serve mydata.db --metadata metadata.json

配置块可以在顶层使用,也可以仅应用于特定的数据库或表。以下是如何将其应用于news.db数据库中的entries

{
    "databases": {
        "news": {
            "tables": {
                "entries": {
                    "plugins": {
                        "datasette-render-markdown": {
                            "columns": ["body"]
                        }
                    }
                }
            }
        }
    }
}

以下是如何将其应用于news.db数据库中每个表的每个body

{
    "databases": {
        "news": {
            "plugins": {
                "datasette-render-markdown": {
                    "columns": ["body"]
                }
            }
        }
    }
}

匹配命名约定的列

此插件还可以在匹配特定命名约定的任何列中渲染Markdown。

默认情况下,名称以_markdown结尾的列将被渲染。

您可以使用以下查询尝试此功能

select '# Hello there

* This is a list
* of items

[And a link](https://github.com/simonw/datasette-render-markdown).'
as demo_markdown

您可以使用"patterns"配置键配置不同的通配符模式列表。以下是如何渲染以_markdown_md结尾的列

{
    "plugins": {
        "datasette-render-markdown": {
            "patterns": ["*_markdown", "*_md"]
        }
    }
}

要完全禁用通配符列匹配,请将插件元数据配置中的"patterns": []设置。

Markdown 扩展

该插件使用的 Python-Markdown 库 支持扩展,包括捆绑的第三方扩展。这些扩展可以用来启用额外的 Markdown 功能,如 表格支持

您可以使用插件元数据配置中的"extensions"键来配置扩展支持。

由于扩展可能引入新的 HTML 标签,您还需要将这些标签添加到由Bleach 清理器允许的标签列表中。您可以使用"extra_tags"键来完成此操作,并使用"extra_attrs"允许额外的 HTML 属性。有关更多信息,请参阅Bleach 文档

以下是启用 Markdown 表格支持的步骤

{
    "plugins": {
        "datasette-render-markdown": {
            "extensions": ["tables"],
            "extra_tags": ["table", "thead", "tr", "th", "td", "tbody"]
        }
    }
}

GitHub 风格的 Markdown

启用 GitHub 风格的 Markdown(如果您正在使用 github-to-sqlite 从 GitHub 导入的数据,则非常有用)要复杂一些。

首先,您需要安装 py-gfm

$ pip install py-gfm

请注意,py-gfm有一个错误,导致它锁定在 Markdown<3.0,因此如果您正在使用它,您应该在安装datasette-render-markdown之前安装它,以确保您得到兼容的版本。

现在您可以按如下方式配置。请注意,扩展名称为mdx_gfm:GithubFlavoredMarkdownExtension,您需要允许列表中包含几个额外的 HTML 标签和属性

{
    "plugins": {
        "datasette-render-markdown": {
            "extra_tags": [
                "hr",
                "br",
                "details",
                "summary",
                "input"
            ],
            "extra_attrs": {
                "input": [
                    "type",
                    "disabled",
                    "checked"
                ],
            },
            "extensions": [
                "mdx_gfm:GithubFlavoredMarkdownExtension"
            ]
        }
    }
}

<input type="" checked disabled>属性对于在问题描述中渲染复选框是必需的。

模板中的 Markdown

该插件引入了一个新的模板标签:{% markdown %}...{% endmarkdown %} - 可以用于在您的 Jinja 模板中渲染 Markdown。

{% markdown %}
# This will be rendered as markdown
{% endmarkdown %}

您可以使用{% markdown %}标签的属性来启用扩展和允许列表中添加额外的标签和属性

{% markdown
  extensions="tables"
  extra_tags="table thead tr th td tbody" 
  extra_attrs="p:id,class a:name,href" %}
## Markdown table

First Header  | Second Header
------------- | -------------
Content Cell  | Content Cell
Content Cell  | Content Cell

<a href="https://www.example.com/" name="namehere">Example</a>
<p id="paragraph" class="klass">Paragraph</p>
{% endmarkdown %}

extensions=extra_tags=属性接受空格分隔的值列表。

extra_attrs=属性接受空格分隔的tag:attr1,attr2值列表 - 每个标签可以指定一个或多个应允许的属性。

您还可以使用{{ render_markdown(...) }}函数,如下所示

{{ render_markdown("""
## Markdown table

First Header  | Second Header
------------- | -------------
Content Cell  | Content Cell
Content Cell  | Content Cell
""", extensions=["tables"],
    extra_tags=["table", "thead", "tr", "th", "td", "tbody"])) }}

建议使用{% markdown %}标签,因为它避免了在 Markdown 内容中转义引号的需要。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源分发

datasette-render-markdown-2.2.1.tar.gz (11.9 kB 查看哈希值)

上传于 来源

构建的发行版

datasette_render_markdown-2.2.1-py3-none-any.whl (10.3 kB 查看哈希值)

上传于 Python 3

由以下支持