From 991f0162a085bfba6a5d6235f59e6ff78b2533a6 Mon Sep 17 00:00:00 2001 From: bendtherules Date: Sat, 21 Dec 2019 16:01:34 +0530 Subject: [PATCH] tagHandler - Handle img tags + tests --- __tests__/renderer-spec.tsx | 32 ++++++++++++++++++++++++++++++++ src/tagHandler.ts | 24 ++++++++++++++++++++++-- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/__tests__/renderer-spec.tsx b/__tests__/renderer-spec.tsx index 6fc266c..3405dc1 100644 --- a/__tests__/renderer-spec.tsx +++ b/__tests__/renderer-spec.tsx @@ -99,3 +99,35 @@ test('should render plain ordered list with text', () => { ) as string).trim() ).toBe('1. a\n2. b\n3. c'); }); + +test('should render image with alt text and title', () => { + expect( + (render( + some alt + ) as string).trim() + ).toBe('![some alt](./test.jpg "some title")'); +}); + +test('should render image with only alt text', () => { + expect( + (render( + some alt + ) as string).trim() + ).toBe('![some alt](./test.jpg)'); +}); + +test('should render image with only title', () => { + expect( + (render( + + ) as string).trim() + ).toBe('![](./test.jpg "some title")'); +}); + +test('should render image without attributes', () => { + expect( + (render( + + ) as string).trim() + ).toBe('![](./test.jpg)'); +}); diff --git a/src/tagHandler.ts b/src/tagHandler.ts index 07a0e07..553c794 100644 --- a/src/tagHandler.ts +++ b/src/tagHandler.ts @@ -1,6 +1,15 @@ -import { emphasis, heading, strong, list, listItem } from 'mdast-builder'; +import { + emphasis, + heading, + image, + list, + listItem, + strong, +} from 'mdast-builder'; +import { ImgHTMLAttributes } from 'react'; // tslint:disable-next-line: no-implicit-dependencies import { Node as MDASTNode, Parent as MDASTParent } from 'unist'; + import { IReactElementSubset } from './helpers'; export default function handleTag( @@ -50,9 +59,20 @@ export default function handleTag( case 'li': newParentASTNode = childASTNode = listItem([]); break; - // END - Handle lists - ul, ol, li + // START - Handle img tag - with src and alt + case 'img': { + const props = node.props as ImgHTMLAttributes; + let source = ''; + if (props.src !== undefined) { + source = props.src; + } + newParentASTNode = childASTNode = image(source, props.title, props.alt); + break; + } + // END - Handle img tag - with src and alt + default: newParentASTNode = parentASTNode; break;