diff --git a/__tests__/renderer-spec.tsx b/__tests__/renderer-spec.tsx
index 0315847..86cccf5 100644
--- a/__tests__/renderer-spec.tsx
+++ b/__tests__/renderer-spec.tsx
@@ -234,7 +234,8 @@ test('should render break (br)', () => {
expect(
(render(
- text 1
text 2
+ text 1
+ text 2
) as string).trim()
).toBe('text 1 \ntext 2');
@@ -250,8 +251,59 @@ test('should render strike (strike, s, del)', () => {
).toBe('This ~~is~~ some ~~text~~');
});
+test('should render tables', () => {
+ expect(
+ (render(
+
+
+
+ | Header 1 |
+ Header 2 |
+
+
+
+
+ | Row 1 Col 1 |
+ Row 1 Col 2 |
+
+
+ | Row 2 Col 1 |
+ Row 2 Col 2 |
+
+
+
+ ) as string).trim()
+ ).toBe(`\
+| Header 1 | Header 2 |
+| ----------- | ----------- |
+| Row 1 Col 1 | Row 1 Col 2 |
+| Row 2 Col 1 | Row 2 Col 2 |\
+`);
+});
+
test('should render fallback as html tag', () => {
expect((render(some text) as string).trim()).toBe(
'some text'
);
});
+
+/*
+
+
+
+ | Header 1 |
+ Header 2 |
+
+
+
+
+ | Row 1 Col 1 |
+ Row 1 Col 2 |
+
+
+ | Row 2 Col 1 |
+ Row 2 Col 2 |
+
+
+
+*/
diff --git a/src/tagHandler.ts b/src/tagHandler.ts
index 5fcb880..398ad98 100644
--- a/src/tagHandler.ts
+++ b/src/tagHandler.ts
@@ -14,8 +14,11 @@ import {
separator,
strike,
strong,
+ table,
+ tableCell,
+ tableRow,
} from 'mdast-builder';
-import {render as renderToHTML} from 'preact-render-to-string';
+import { render as renderToHTML } from 'preact-render-to-string';
import {
AnchorHTMLAttributes,
Children as ReactChildren,
@@ -199,14 +202,41 @@ export default function handleTag(
}
break;
}
- // END - Handle blockquote
+ // END - Handle pre.code
+
+ // START - Handle table - all tags
+ case 'table': {
+ // TODO: Handle align
+ newParentASTNode = childASTNode = table();
+ break;
+ }
+
+ // Passthrough thead and tbody
+ case 'thead':
+ case 'tbody': {
+ newParentASTNode = parentASTNode;
+ break;
+ }
+
+ // Handle table rows
+ case 'tr': {
+ newParentASTNode = childASTNode = tableRow();
+ break;
+ }
+
+ // Handle table values (th - for header, td - for body)
+ case 'th':
+ case 'td': {
+ newParentASTNode = childASTNode = tableCell();
+ break;
+ }
+ // END - Handle table - all tags
default:
isHandled = false;
break;
}
-
if (!isHandled) {
// Handle as html
let htmlText = '';