MDAST 虚拟网格
将网格表序列化为mdast和/或hast的Mdast工具.
状态
这是什么?
此软件包包含添加格表语法支持的扩展名
改为 mdast-util-from-markdown
财务报告和审定财务报表 mdast-util-to-markdown。 。 。 .
何时使用
这些工具都相当低级.
在多数情况下,您会想使用:@adobe/remark-gridtables换句话说.
合作时 mdast-util-from-markdown,您必须结合此软件包和
@adobe/micromark-extension-gridtables。 。 。 .
此工具不处理如何将标记降为 HTML .
这是由 mdast-util-to-hast。 。 。 .
安装
这个软件包是 仅限无害环境管理。 。 。 . 在Node.js(12.20+,14.14+,或16.0+)中,安装与 无数字 :
npm install @adobe/mdast-util-gridtables
使用量
注:由于微标记解析器的结构,无法解析单元格内容 持续。 此外,待标工具无法使其配置可供 扩展,所以我们需要将配置手动传入网格表扩展.
import fs from 'node:fs/promises';
import { fromMarkdown } from 'mdast-util-from-markdown';
import { toMarkdown } from 'mdast-util-to-markdown';
import { gridTables } from '@adobe/micromark-extension-gridtables'
import {
gridTablesToMarkdown,
gridTablesFromMarkdown,
mdast2hastGridTablesHandler,
TYPE_TABLE,
} from '@adobe/mdast-util-gridtables';
const doc = await fs.readFile('example.md')
// convert markdown to mdast
const options = {
extensions: [gridTables],
mdastExtensions: [],
};
options.mdastExtensions.push(gridTablesFromMarkdown(options));
const tree = fromMarkdown(sourceMarkdown, options);
// convert mdast to md
const outputMarkdown = toMarkdown(tree, {extensions: [gridTablesToMarkdown()]})
// convert mdast to hast
const hast = mdast2hast(mdast, {
handlers: {
[TYPE_TABLE]: mdast2hastGridTablesHandler(),
},
});
还见一个工作 实例。 。 。 .
概览
网格表是这样的:
+-------------------+------+
| Table Headings | Here |
+--------+----------+------+
| Sub | Headings | Too |
+========+=================+
| cell | column spanning |
| spans +---------:+------+
| rows | normal | cell |
+---v----+:---------------:+
| | cells can be |
| | *formatted* |
| | **paragraphs** |
| | ``` |
| multi | and contain |
| line | blocks |
| cells | ``` |
+========+=========<+======+
| footer | cells | |
+--------+----------+------+
- 单元格顶部必须用
+-接着是一些-或者说+完成于-+。 。 。 . - 如果表格包含页脚但没有页眉,则上行应当使用
=作为网格线. - col 跨度用缺一栏表示(
|(a) 划界人 - 缺行表示行长(
-(a) 划界人 - 单元格可以是左、中、右或对齐的理由;通过放置
:或者说>< - 单元格可以是上,中,或下相v;用箭头的放入表示(
v^x(中文(简体) ) - 标题和页脚段由区划符划定(
=) (中文(简体) ). - 如果没有分区分隔符,所有单元格都放在表格正文中.
- 如果只有1个区划符,则它从正文中划分标题.
- 单元格中的内容可以再次成为完整的Markdown文档。 注,单元格边界(
|(中文(简体) ) 需要与列标记完全匹配(+在行分隔符中,如果单元格内容 包含|,否则无法保证表格的正确布局.
版式
表格布局试图使表格保持一定的宽度(默认为120). 譬如说, 如果表格有3个栏,则每个栏将最大宽40个字符。 如果列中的所有文字 较小, 它会缩小柱子。 然而,当 文本需要被打破。 如果单元格内容需要更多的空格,例如有嵌入式表或 代码块,它会相应增长.
对齐
水平对齐通过在单元格上方的网格线上放置标记来表示:
Justify Center Left Right
+>-----<+ +:-----:+ +:------+ +------:+
| A b C | | ABC | | ABC | | ABC |
+-------+ +-------+ +-------+ +-------+
垂直对齐通过在单元格上方的网格线中心放置标记来表示:
Top Middle Bottom
+---^---+ +---x---+ +---v---+
| Larum | | | | |
| Ipsum | | Larum | | |
| | | Ipsum | | Larum |
| | | | | Ipsum |
+-------+ +-------+ +-------+
语法
gridTable := gridLine cellLine+ gridLine;
gridLine := gridCell+ "+";
cellLine := ( gridCell | cellContent )+ ( "+" | "|" );
gridCell := "+" alignMarkerStart? ("-" | "=")+ vAlignMarker? ("-" | "=")* alignMarkerEnd?;
cellContent := ( "+" | "|" ) " " content " " ;
alignMarkerStart := ":" | ">";
alignMarkerEnd := ":" | "<";
vAlignMarker := "^" | "v" | "x"
MDAST 语法树
以下接口被添加到 目标数 由这个工具.
节点
GridTable
interface GridTable <: Parent {
type: "gridTable"
children: [GridTableHeader|GridTableBody|GridTableFooter]
}
GridTableHeader
interface GridTableHeader <: Parent {
type: "gtHead"
children: [GridTableRow]
}
GridTableBody
interface GridTableBody <: Parent {
type: "gtBody"
children: [GridTableRow]
}
GridTableFoot
interface GridTableFooter <: Parent {
type: "gtFoot"
children: [GridTableRow]
}
GridTableRow
interface GridTableRow <: Parent {
type: "gtRow"
children: [GridTableCell]
}
GridTableCell
interface GridTableCell <: Parent {
type: "gtCell"
colSpan: number >= 1
rowSpan: number >= 1
align: alignType
valign: valignType
children: [MdastContent]
}
网格表环 (单位:千美元)家长) 代表一个标题单元格 网格表,如果其父母是[网格表头[术语],或数据 否则,单元格.
网格表环 可用于 网格表单 预期内容. 它的内容模型是 目标数 内容,允许完整的mdast文档.
编号
alignType
enum alignType {
"left" | "right" | "center" | "justify" | null
}
valignType
enum alignType {
"top" | "bottom" | "middle" | null
}