使用 perl 将降价文本转换为 html table
convert markdown text to html table using perl
我正在尝试使用 Perl 模块将 Markdown 文本转换为 HTML table。我尝试使用 Text::Markdown,但没有用。
我也尝试使用 Markdown::Table 并遵循文档:https://metacpan.org/pod/Markdown::Table,
但同样的事情没有结果。
这是我的代码:
use Markdown::Table;
my $markdown = q~
| Id | Name | Role |
+---+---+---+
| 1 | John Smith | Testrole |
| 2 | Jane Smith | Admin |
~;
my @tables = Markdown::Table->parse($markdown);
use Data::Dumper;
Core::Global::Logger::debug(Dumper( $tables[0]->get_table ) );
输出:
有人可以帮忙吗?
我建议使用 Perl 的 Pandoc module, which is a wrapper around Pandoc,这是一种将文档从一种格式转换为另一种格式的工具。例如,
use Pandoc;
my $markdown = q(
Some `standard` **Markdown** _syntax_. Also, a table:
country | capital
--------|---------
France | Paris
UK | London
Germany | Berlin);
print pandoc->convert('markdown' => 'html', $markdown);
输出:
<p>Some <code>standard</code> <strong>Markdown</strong> <em>syntax</em>. Also, a table:</p>
<table>
<thead>
<tr class="header">
<th>country</th>
<th>capital</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>France</td>
<td>Paris</td>
</tr>
<tr class="even">
<td>UK</td>
<td>London</td>
</tr>
<tr class="odd">
<td>Germany</td>
<td>Berlin</td>
</tr>
</tbody>
</table>
请注意,要使其正常工作,您必须安装 Perl 的 Pandoc 模块(例如 cpanm Pandoc
)以及 Pandoc 程序([=49= 上的 sudo apt install pandoc
];请参阅 Installing pandoc 了解其他系统)。
关于您尝试使用的其他模块:
Markdown::Table 是一个旨在帮助您解析和操作 Markdown table 的模块。它不会生成 HTML(除 Markdown 之外也不会生成任何内容)。
Text::Markdown generates HTML from Markdown, but does not support Markdown tables. The syntax of Markdown supported by this module is specified in https://daringfireball.net/projects/markdown/syntax,不包括tables.
不过,此模块允许您在 Markdown 中编写 HTML,这 可能 是一种解决方法,具体取决于您的具体要求。例如:
use Text::Markdown 'markdown';
my $markdown = q(
This _text_ uses **Markdown** `syntax`. Then a table:
<table>
<tr><td>country</td><th>capital</th></tr>
<tr><td>France</td><td>Paris</td></tr>
<tr><td>UK</td><td>London</td></tr>
<tr><td>Germany</td><td>Berlin</td></tr>
</table>);
print markdown( $markdown );
Text::Markdown 会将 Markdown 元素转换为 HTML,同时保留 table.
使用 Text::MultiMarkdown
原始 Markdown 不支持 tables。而Text::Markdown
只支持原始语法
Text::MultiMarkdown
具有附加功能。
- 项目站点:https://fletcherpenney.net/multimarkdown/
- 特点:https://rawgit.com/fletcher/MultiMarkdown-6-Syntax-Guide/master/index.html
此外,您还必须更改 table 格式。
use v5.10;
use Text::MultiMarkdown qw(markdown);
my $text = q[
| Id | Name | Role |
|---|---|---|
| 1 | John Smith | Testrole |
| 2 | Jane Smith | Admin |
];
# Replace any CRLF/LF line-endings to the native Line-Ending used by Perl
$text =~ s/\R/\n/g;
my $html = markdown($text);
printf "%s\n", $html;
会产生
<table>
<col />
<col />
<col />
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Role</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>John Smith</td>
<td>Testrole</td>
</tr>
<tr>
<td>2</td>
<td>Jane Smith</td>
<td>Admin</td>
</tr>
</tbody>
</table>
我正在尝试使用 Perl 模块将 Markdown 文本转换为 HTML table。我尝试使用 Text::Markdown,但没有用。
我也尝试使用 Markdown::Table 并遵循文档:https://metacpan.org/pod/Markdown::Table, 但同样的事情没有结果。
这是我的代码:
use Markdown::Table;
my $markdown = q~
| Id | Name | Role |
+---+---+---+
| 1 | John Smith | Testrole |
| 2 | Jane Smith | Admin |
~;
my @tables = Markdown::Table->parse($markdown);
use Data::Dumper;
Core::Global::Logger::debug(Dumper( $tables[0]->get_table ) );
输出:
有人可以帮忙吗?
我建议使用 Perl 的 Pandoc module, which is a wrapper around Pandoc,这是一种将文档从一种格式转换为另一种格式的工具。例如,
use Pandoc;
my $markdown = q(
Some `standard` **Markdown** _syntax_. Also, a table:
country | capital
--------|---------
France | Paris
UK | London
Germany | Berlin);
print pandoc->convert('markdown' => 'html', $markdown);
输出:
<p>Some <code>standard</code> <strong>Markdown</strong> <em>syntax</em>. Also, a table:</p>
<table>
<thead>
<tr class="header">
<th>country</th>
<th>capital</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>France</td>
<td>Paris</td>
</tr>
<tr class="even">
<td>UK</td>
<td>London</td>
</tr>
<tr class="odd">
<td>Germany</td>
<td>Berlin</td>
</tr>
</tbody>
</table>
请注意,要使其正常工作,您必须安装 Perl 的 Pandoc 模块(例如 cpanm Pandoc
)以及 Pandoc 程序([=49= 上的 sudo apt install pandoc
];请参阅 Installing pandoc 了解其他系统)。
关于您尝试使用的其他模块:
Markdown::Table 是一个旨在帮助您解析和操作 Markdown table 的模块。它不会生成 HTML(除 Markdown 之外也不会生成任何内容)。
Text::Markdown generates HTML from Markdown, but does not support Markdown tables. The syntax of Markdown supported by this module is specified in https://daringfireball.net/projects/markdown/syntax,不包括tables.
不过,此模块允许您在 Markdown 中编写 HTML,这 可能 是一种解决方法,具体取决于您的具体要求。例如:use Text::Markdown 'markdown'; my $markdown = q( This _text_ uses **Markdown** `syntax`. Then a table: <table> <tr><td>country</td><th>capital</th></tr> <tr><td>France</td><td>Paris</td></tr> <tr><td>UK</td><td>London</td></tr> <tr><td>Germany</td><td>Berlin</td></tr> </table>); print markdown( $markdown );
Text::Markdown 会将 Markdown 元素转换为 HTML,同时保留 table.
使用 Text::MultiMarkdown
原始 Markdown 不支持 tables。而Text::Markdown
只支持原始语法
Text::MultiMarkdown
具有附加功能。
- 项目站点:https://fletcherpenney.net/multimarkdown/
- 特点:https://rawgit.com/fletcher/MultiMarkdown-6-Syntax-Guide/master/index.html
此外,您还必须更改 table 格式。
use v5.10;
use Text::MultiMarkdown qw(markdown);
my $text = q[
| Id | Name | Role |
|---|---|---|
| 1 | John Smith | Testrole |
| 2 | Jane Smith | Admin |
];
# Replace any CRLF/LF line-endings to the native Line-Ending used by Perl
$text =~ s/\R/\n/g;
my $html = markdown($text);
printf "%s\n", $html;
会产生
<table>
<col />
<col />
<col />
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Role</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>John Smith</td>
<td>Testrole</td>
</tr>
<tr>
<td>2</td>
<td>Jane Smith</td>
<td>Admin</td>
</tr>
</tbody>
</table>