@atjson/renderer-commonmark
Advanced tools
Comparing version 0.7.5 to 0.7.9
@@ -1,38 +0,24 @@ | ||
import Renderer, { State } from '@atjson/renderer-hir'; | ||
import Document from '@atjson/document'; | ||
import { HIRNode } from '@atjson/hir'; | ||
import { State } from '@atjson/renderer-hir'; | ||
export declare function split(): IterableIterator<string>; | ||
export declare type CodeStyle = 'block' | 'inline' | 'fence'; | ||
export default class CommonmarkRenderer extends Renderer { | ||
renderText(text: string, state: State): string; | ||
'root'(): IterableIterator<string>; | ||
'bold'(): IterableIterator<string>; | ||
'quotation'(_: any, state: State): IterableIterator<string>; | ||
'heading'(props: { | ||
level: number; | ||
}): IterableIterator<string>; | ||
export default class CommonmarkRenderer { | ||
state: any; | ||
constructor(); | ||
text(text: string): string; | ||
'bold'(node: HIRNode): IterableIterator<string>; | ||
'blockquote'(): IterableIterator<string>; | ||
'heading'(node: HIRNode): IterableIterator<string>; | ||
'horizontal-rule'(): IterableIterator<string>; | ||
'image'(props: { | ||
description: string; | ||
title?: string; | ||
url: string; | ||
}): IterableIterator<string>; | ||
'italic'(_: any, state: State): IterableIterator<string>; | ||
'image'(node: HIRNode): IterableIterator<string>; | ||
'italic'(node: HIRNode): IterableIterator<string>; | ||
'line-break'(): IterableIterator<string>; | ||
'link'(props: { | ||
url: string; | ||
title?: string; | ||
}): IterableIterator<string>; | ||
'code'(props: { | ||
style: CodeStyle; | ||
info?: string; | ||
}, state: State): IterableIterator<string>; | ||
'html'(props: { | ||
type: string; | ||
}, state: State): IterableIterator<string>; | ||
'list-item'(_: any, state: State): IterableIterator<string>; | ||
'list'(props: { | ||
type: string; | ||
startsAt?: number; | ||
tight: boolean; | ||
}, state: State): IterableIterator<string>; | ||
'paragraph'(_: any, state: State): IterableIterator<string>; | ||
'link'(node: HIRNode): IterableIterator<string>; | ||
'code'(node: HIRNode): IterableIterator<string>; | ||
'html'(node: HIRNode): IterableIterator<string>; | ||
'list-item'(node: HIRNode, state: State): IterableIterator<string>; | ||
'list'(node: HIRNode): IterableIterator<string>; | ||
'paragraph'(): IterableIterator<string>; | ||
render(document: Document): string; | ||
} |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const renderer_hir_1 = require("@atjson/renderer-hir"); | ||
const hir_1 = require("@atjson/hir"); | ||
function* split() { | ||
let rawText = yield; | ||
let text = rawText.join(''); | ||
let text = yield; | ||
let start = 0; | ||
@@ -52,5 +51,46 @@ let end = text.length; | ||
} | ||
class CommonmarkRenderer extends renderer_hir_1.default { | ||
renderText(text, state) { | ||
if (state.get('isPreformatted')) { | ||
function render(renderer, node, parent, index) { | ||
if (index > 0) { | ||
node.previous = parent.children[index - 1]; | ||
} | ||
else { | ||
node.previous = null; | ||
} | ||
if (parent && index < parent.children.length) { | ||
node.next = parent.children[index + 1]; | ||
} | ||
else { | ||
node.next = null; | ||
} | ||
node.parent = parent; | ||
node.children = node.children(); | ||
let generator; | ||
if (renderer[node.type]) { | ||
generator = renderer[node.type](node, parent); | ||
let result = generator.next(); | ||
if (result.done) { | ||
return result.value; | ||
} | ||
} | ||
let fragment = node.children.map((childNode, idx) => { | ||
if (childNode.type === 'text' && typeof childNode.text === 'string') { | ||
return renderer.text(childNode.text); | ||
} | ||
else { | ||
return render(renderer, childNode, node, idx); | ||
} | ||
}).join(''); | ||
if (generator) { | ||
return generator.next(fragment).value; | ||
} | ||
else { | ||
return fragment; | ||
} | ||
} | ||
class CommonmarkRenderer { | ||
constructor() { | ||
this.state = {}; | ||
} | ||
text(text) { | ||
if (this.state.isPreformatted) { | ||
return text; | ||
@@ -60,13 +100,13 @@ } | ||
} | ||
*'root'() { | ||
let document = yield; | ||
return document.join(''); | ||
} | ||
*'bold'() { | ||
*'bold'(node) { | ||
let [before, text, after] = yield* split(); | ||
if (node.parent && !node.previous && !node.next && | ||
node.parent.type === 'italic') { | ||
return `${before}__${text}__${after}`; | ||
} | ||
return `${before}**${text}**${after}`; | ||
} | ||
*'quotation'(_, state) { | ||
*'blockquote'() { | ||
let text = yield; | ||
let lines = text.join('').split('\n'); | ||
let lines = text.split('\n'); | ||
let endOfQuote = lines.length; | ||
@@ -79,3 +119,3 @@ let startOfQuote = 0; | ||
let quote = lines.slice(startOfQuote, endOfQuote).map(line => `> ${line}`).join('\n') + '\n'; | ||
if (!state.get('tight')) { | ||
if (!this.state.tight) { | ||
quote += '\n'; | ||
@@ -85,11 +125,10 @@ } | ||
} | ||
*'heading'(props) { | ||
let text = yield; | ||
let level = new Array(props.level + 1).join('#'); | ||
let heading = text.join(''); | ||
*'heading'(node) { | ||
let heading = yield; | ||
let level = new Array(node.attributes.level + 1).join('#'); | ||
if (heading.indexOf('\n') !== -1) { | ||
if (props.level === 1) { | ||
if (node.attributes.level === 1) { | ||
return `${heading}\n====\n`; | ||
} | ||
else if (props.level === 2) { | ||
else if (node.attributes.level === 2) { | ||
return `${heading}\n----\n`; | ||
@@ -103,15 +142,19 @@ } | ||
} | ||
*'image'(props) { | ||
if (props.title) { | ||
let title = props.title.replace(/"/g, '\\"'); | ||
return `![${props.description}](${props.url} "${title}")`; | ||
*'image'(node) { | ||
if (node.attributes.title) { | ||
let title = node.attributes.title.replace(/"/g, '\\"'); | ||
return `![${node.attributes.description}](${node.attributes.url} "${title}")`; | ||
} | ||
return `![${props.description}](${props.url})`; | ||
return `![${node.attributes.description}](${node.attributes.url})`; | ||
} | ||
*'italic'(_, state) { | ||
let isItalicized = state.get('isItalicized'); | ||
state.set('isItalicized', true); | ||
*'italic'(node) { | ||
let state = Object.assign({}, this.state); | ||
this.state.isItalicized = true; | ||
let [before, text, after] = yield* split(); | ||
state.set('isItalicized', isItalicized); | ||
let markup = isItalicized ? '_' : '*'; | ||
let markup = state.isItalicized ? '_' : '*'; | ||
if (node.parent && !node.previous && !node.next && | ||
node.parent.type === 'bold') { | ||
markup = '_'; | ||
} | ||
this.state = state; | ||
return `${before}${markup}${text}${markup}${after}`; | ||
@@ -122,7 +165,7 @@ } | ||
} | ||
*'link'(props) { | ||
*'link'(node) { | ||
let [before, text, after] = yield* split(); | ||
let url = escapeAttribute(props.url); | ||
if (props.title) { | ||
let title = props.title.replace(/"/g, '\\"'); | ||
let url = escapeAttribute(node.attributes.url); | ||
if (node.attributes.title) { | ||
let title = node.attributes.title.replace(/"/g, '\\"'); | ||
return `${before}[${text}](${url} "${title}")${after}`; | ||
@@ -132,12 +175,12 @@ } | ||
} | ||
*'code'(props, state) { | ||
state.push({ isPreformatted: true, htmlSafe: false }); | ||
let text = yield; | ||
state.pop(); | ||
let code = text.join(''); | ||
if (props.style === 'fence') { | ||
*'code'(node) { | ||
let state = Object.assign({}, this.state); | ||
Object.assign(this.state, { isPreformatted: true, htmlSafe: true }); | ||
let code = yield; | ||
this.state = state; | ||
if (node.attributes.style === 'fence') { | ||
code = '\n' + code; | ||
let info = props.info || ''; | ||
let info = node.attributes.info || ''; | ||
let newlines = '\n'; | ||
if (state.get('isList') && state.get('nextAnnotation')) { | ||
if (this.state.isList && node.next) { | ||
newlines += '\n'; | ||
@@ -152,3 +195,3 @@ } | ||
} | ||
else if (props.style === 'block') { | ||
else if (node.attributes.style === 'block') { | ||
return code.split('\n').map((line) => ` ${line}`).join('\n') + '\n'; | ||
@@ -166,8 +209,8 @@ } | ||
} | ||
*'html'(props, state) { | ||
state.push({ isPreformatted: true, htmlSafe: true }); | ||
let text = yield; | ||
state.pop(); | ||
let html = text.join(''); | ||
if (props.type === 'block') { | ||
*'html'(node) { | ||
let state = Object.assign({}, this.state); | ||
Object.assign(this.state, { isPreformatted: true, htmlSafe: true }); | ||
let html = yield; | ||
this.state = state; | ||
if (node.attributes.type === 'block') { | ||
return html + '\n'; | ||
@@ -177,13 +220,12 @@ } | ||
} | ||
*'list-item'(_, state) { | ||
let digit = state.get('digit'); | ||
let delimiter = state.get('delimiter'); | ||
*'list-item'(node, state) { | ||
let digit = this.state.digit; | ||
let delimiter = this.state.delimiter; | ||
let marker = delimiter; | ||
if (state.get('type') === 'numbered') { | ||
if (this.state.type === 'numbered') { | ||
marker = `${digit}${delimiter}`; | ||
state.set('digit', digit + 1); | ||
this.state.digit++; | ||
} | ||
let indent = ' '.repeat(marker.length + 1); | ||
let text = yield; | ||
let item = text.join(''); | ||
let item = yield; | ||
let firstCharacter = 0; | ||
@@ -197,3 +239,6 @@ while (item[firstCharacter] === ' ') | ||
item = ' '.repeat(firstCharacter) + first + '\n' + rest.map(line => indent + line).join('\n').replace(/[ ]+$/, ''); | ||
if (state.get('hasCodeBlockFollowing')) { | ||
if (this.state.tight) { | ||
item = item.replace(/([ \n])+$/, '\n'); | ||
} | ||
if (this.state.hasCodeBlockFollowing) { | ||
return ` ${marker} ${item}`; | ||
@@ -203,54 +248,56 @@ } | ||
} | ||
*'list'(props, state) { | ||
*'list'(node) { | ||
let start = 1; | ||
if (props && props.startsAt != null) { | ||
start = props.startsAt; | ||
if (node.attributes.startsAt != null) { | ||
start = node.attributes.startsAt; | ||
} | ||
let delimiter = ''; | ||
if (props.type === 'numbered') { | ||
if (node.attributes.type === 'numbered') { | ||
delimiter = '.'; | ||
if (state.get('previous.type') === 'numbered' && | ||
state.get('previous.delimiter') === '.') { | ||
if (node.previous && | ||
node.previous.type === 'list' && | ||
node.previous.attributes.type === 'numbered' && | ||
node.previous.delimiter === '.') { | ||
delimiter = ')'; | ||
} | ||
} | ||
else if (props.type === 'bulleted') { | ||
else if (node.attributes.type === 'bulleted') { | ||
delimiter = '-'; | ||
if (state.get('previous.type') === 'bulleted' && | ||
state.get('previous.delimiter') === '-') { | ||
if (node.previous && | ||
node.previous.type === 'list' && | ||
node.previous.attributes.type === 'bulleted' && | ||
node.previous.delimiter === '-') { | ||
delimiter = '+'; | ||
} | ||
} | ||
let hasCodeBlockFollowing = state.get('nextAnnotation.type') === 'code' && | ||
state.get('nextAnnotation.attributes.style') === 'block'; | ||
state.push({ | ||
node.delimiter = delimiter; | ||
let state = Object.assign({}, this.state); | ||
let hasCodeBlockFollowing = node.next && | ||
node.next.type === 'code' && | ||
node.next.attributes.style === 'block'; | ||
Object.assign(this.state, { | ||
isList: true, | ||
type: props.type, | ||
type: node.attributes.type, | ||
digit: start, | ||
previous: state.get('previous'), | ||
delimiter, | ||
hasCodeBlockFollowing, | ||
tight: props && props.tight | ||
tight: node.attributes.tight, | ||
hasCodeBlockFollowing | ||
}); | ||
let list = yield; | ||
state.pop(); | ||
if (props && props.tight) { | ||
list = list.map(item => item.replace(/([ \n])+$/, '\n')); | ||
} | ||
state.set('previous', { | ||
isList: true, | ||
type: props.type, | ||
delimiter | ||
}); | ||
return list.join('') + '\n'; | ||
this.state = state; | ||
return list + '\n'; | ||
} | ||
*'paragraph'(_, state) { | ||
*'paragraph'() { | ||
let text = yield; | ||
if (state.get('tight')) { | ||
return text.join('') + '\n'; | ||
if (this.state.tight) { | ||
return text + '\n'; | ||
} | ||
return text.join('') + '\n\n'; | ||
return text + '\n\n'; | ||
} | ||
render(document) { | ||
let graph = new hir_1.HIR(document); | ||
return render(this, graph.rootNode); | ||
} | ||
} | ||
exports.default = CommonmarkRenderer; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSx1REFBdUQ7QUFFdkQsUUFBZSxDQUFDO0lBQ2QsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUV0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQUMsS0FBSyxFQUFFLENBQUM7SUFBQyxDQUFDO0lBQ3ZELE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQUMsR0FBRyxFQUFFLENBQUM7SUFBQyxDQUFDO0lBRXZELE1BQU0sQ0FBQztRQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7S0FDaEIsQ0FBQztBQUNKLENBQUM7QUFkRCxzQkFjQztBQUtELDJCQUEyQixJQUFZO0lBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxFQUFFLE1BQU0sQ0FBQztTQUNyRCxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztTQUM1QixPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztTQUN0QixPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztTQUNyQixPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFD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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxxQ0FBMkM7QUFHM0MsUUFBZSxDQUFDO0lBQ2QsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFFdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUFDLEtBQUssRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUN2RCxPQUFPLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLEdBQUcsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUFDLEdBQUcsRUFBRSxDQUFDO0lBQUMsQ0FBQztJQUV2RCxNQUFNLENBQUM7UUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0tBQ2hCLENBQUM7QUFDSixDQUFDO0FBYkQsc0JBYUM7QUFLRCwyQkFBMkIsSUFBWTtJQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsRUFBRSxNQUFNLENBQUM7U0FDckQsT0FBTyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUM7U0FDNUIsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7U0FDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQseUJBQXlCLElBQVk7SUFDbkMsTUFBTSxDQUFDLElBQUksQ0FBQyxP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LE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDckUsQ0FBQztJQUtELENBQUMsUUFBUSxDQUFDLElBQWE7UUFHckIsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUUvQixJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUM1QyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDaEMsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixNQUFNLENBQUMsR0FBRyxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksR0FBRyxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQU1ELENBQUMsWUFBWTtRQUNYLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUtELENBQUMsTUFBTSxDQUFDLElBQWE7UUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsSUFBSSxHQUFHLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxV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 |
@@ -1,38 +0,24 @@ | ||
import Renderer, { State } from '@atjson/renderer-hir'; | ||
import Document from '@atjson/document'; | ||
import { HIRNode } from '@atjson/hir'; | ||
import { State } from '@atjson/renderer-hir'; | ||
export declare function split(): IterableIterator<string>; | ||
export declare type CodeStyle = 'block' | 'inline' | 'fence'; | ||
export default class CommonmarkRenderer extends Renderer { | ||
renderText(text: string, state: State): string; | ||
'root'(): IterableIterator<string>; | ||
'bold'(): IterableIterator<string>; | ||
'quotation'(_: any, state: State): IterableIterator<string>; | ||
'heading'(props: { | ||
level: number; | ||
}): IterableIterator<string>; | ||
export default class CommonmarkRenderer { | ||
state: any; | ||
constructor(); | ||
text(text: string): string; | ||
'bold'(node: HIRNode): IterableIterator<string>; | ||
'blockquote'(): IterableIterator<string>; | ||
'heading'(node: HIRNode): IterableIterator<string>; | ||
'horizontal-rule'(): IterableIterator<string>; | ||
'image'(props: { | ||
description: string; | ||
title?: string; | ||
url: string; | ||
}): IterableIterator<string>; | ||
'italic'(_: any, state: State): IterableIterator<string>; | ||
'image'(node: HIRNode): IterableIterator<string>; | ||
'italic'(node: HIRNode): IterableIterator<string>; | ||
'line-break'(): IterableIterator<string>; | ||
'link'(props: { | ||
url: string; | ||
title?: string; | ||
}): IterableIterator<string>; | ||
'code'(props: { | ||
style: CodeStyle; | ||
info?: string; | ||
}, state: State): IterableIterator<string>; | ||
'html'(props: { | ||
type: string; | ||
}, state: State): IterableIterator<string>; | ||
'list-item'(_: any, state: State): IterableIterator<string>; | ||
'list'(props: { | ||
type: string; | ||
startsAt?: number; | ||
tight: boolean; | ||
}, state: State): IterableIterator<string>; | ||
'paragraph'(_: any, state: State): IterableIterator<string>; | ||
'link'(node: HIRNode): IterableIterator<string>; | ||
'code'(node: HIRNode): IterableIterator<string>; | ||
'html'(node: HIRNode): IterableIterator<string>; | ||
'list-item'(node: HIRNode, state: State): IterableIterator<string>; | ||
'list'(node: HIRNode): IterableIterator<string>; | ||
'paragraph'(): IterableIterator<string>; | ||
render(document: Document): string; | ||
} |
@@ -1,5 +0,4 @@ | ||
import Renderer from '@atjson/renderer-hir'; | ||
import { HIR } from '@atjson/hir'; | ||
export function* split() { | ||
let rawText = yield; | ||
let text = rawText.join(''); | ||
let text = yield; | ||
let start = 0; | ||
@@ -49,5 +48,46 @@ let end = text.length; | ||
} | ||
export default class CommonmarkRenderer extends Renderer { | ||
renderText(text, state) { | ||
if (state.get('isPreformatted')) { | ||
function render(renderer, node, parent, index) { | ||
if (index > 0) { | ||
node.previous = parent.children[index - 1]; | ||
} | ||
else { | ||
node.previous = null; | ||
} | ||
if (parent && index < parent.children.length) { | ||
node.next = parent.children[index + 1]; | ||
} | ||
else { | ||
node.next = null; | ||
} | ||
node.parent = parent; | ||
node.children = node.children(); | ||
let generator; | ||
if (renderer[node.type]) { | ||
generator = renderer[node.type](node, parent); | ||
let result = generator.next(); | ||
if (result.done) { | ||
return result.value; | ||
} | ||
} | ||
let fragment = node.children.map((childNode, idx) => { | ||
if (childNode.type === 'text' && typeof childNode.text === 'string') { | ||
return renderer.text(childNode.text); | ||
} | ||
else { | ||
return render(renderer, childNode, node, idx); | ||
} | ||
}).join(''); | ||
if (generator) { | ||
return generator.next(fragment).value; | ||
} | ||
else { | ||
return fragment; | ||
} | ||
} | ||
export default class CommonmarkRenderer { | ||
constructor() { | ||
this.state = {}; | ||
} | ||
text(text) { | ||
if (this.state.isPreformatted) { | ||
return text; | ||
@@ -57,13 +97,13 @@ } | ||
} | ||
*'root'() { | ||
let document = yield; | ||
return document.join(''); | ||
} | ||
*'bold'() { | ||
*'bold'(node) { | ||
let [before, text, after] = yield* split(); | ||
if (node.parent && !node.previous && !node.next && | ||
node.parent.type === 'italic') { | ||
return `${before}__${text}__${after}`; | ||
} | ||
return `${before}**${text}**${after}`; | ||
} | ||
*'quotation'(_, state) { | ||
*'blockquote'() { | ||
let text = yield; | ||
let lines = text.join('').split('\n'); | ||
let lines = text.split('\n'); | ||
let endOfQuote = lines.length; | ||
@@ -76,3 +116,3 @@ let startOfQuote = 0; | ||
let quote = lines.slice(startOfQuote, endOfQuote).map(line => `> ${line}`).join('\n') + '\n'; | ||
if (!state.get('tight')) { | ||
if (!this.state.tight) { | ||
quote += '\n'; | ||
@@ -82,11 +122,10 @@ } | ||
} | ||
*'heading'(props) { | ||
let text = yield; | ||
let level = new Array(props.level + 1).join('#'); | ||
let heading = text.join(''); | ||
*'heading'(node) { | ||
let heading = yield; | ||
let level = new Array(node.attributes.level + 1).join('#'); | ||
if (heading.indexOf('\n') !== -1) { | ||
if (props.level === 1) { | ||
if (node.attributes.level === 1) { | ||
return `${heading}\n====\n`; | ||
} | ||
else if (props.level === 2) { | ||
else if (node.attributes.level === 2) { | ||
return `${heading}\n----\n`; | ||
@@ -100,15 +139,19 @@ } | ||
} | ||
*'image'(props) { | ||
if (props.title) { | ||
let title = props.title.replace(/"/g, '\\"'); | ||
return `![${props.description}](${props.url} "${title}")`; | ||
*'image'(node) { | ||
if (node.attributes.title) { | ||
let title = node.attributes.title.replace(/"/g, '\\"'); | ||
return `![${node.attributes.description}](${node.attributes.url} "${title}")`; | ||
} | ||
return `![${props.description}](${props.url})`; | ||
return `![${node.attributes.description}](${node.attributes.url})`; | ||
} | ||
*'italic'(_, state) { | ||
let isItalicized = state.get('isItalicized'); | ||
state.set('isItalicized', true); | ||
*'italic'(node) { | ||
let state = Object.assign({}, this.state); | ||
this.state.isItalicized = true; | ||
let [before, text, after] = yield* split(); | ||
state.set('isItalicized', isItalicized); | ||
let markup = isItalicized ? '_' : '*'; | ||
let markup = state.isItalicized ? '_' : '*'; | ||
if (node.parent && !node.previous && !node.next && | ||
node.parent.type === 'bold') { | ||
markup = '_'; | ||
} | ||
this.state = state; | ||
return `${before}${markup}${text}${markup}${after}`; | ||
@@ -119,7 +162,7 @@ } | ||
} | ||
*'link'(props) { | ||
*'link'(node) { | ||
let [before, text, after] = yield* split(); | ||
let url = escapeAttribute(props.url); | ||
if (props.title) { | ||
let title = props.title.replace(/"/g, '\\"'); | ||
let url = escapeAttribute(node.attributes.url); | ||
if (node.attributes.title) { | ||
let title = node.attributes.title.replace(/"/g, '\\"'); | ||
return `${before}[${text}](${url} "${title}")${after}`; | ||
@@ -129,12 +172,12 @@ } | ||
} | ||
*'code'(props, state) { | ||
state.push({ isPreformatted: true, htmlSafe: false }); | ||
let text = yield; | ||
state.pop(); | ||
let code = text.join(''); | ||
if (props.style === 'fence') { | ||
*'code'(node) { | ||
let state = Object.assign({}, this.state); | ||
Object.assign(this.state, { isPreformatted: true, htmlSafe: true }); | ||
let code = yield; | ||
this.state = state; | ||
if (node.attributes.style === 'fence') { | ||
code = '\n' + code; | ||
let info = props.info || ''; | ||
let info = node.attributes.info || ''; | ||
let newlines = '\n'; | ||
if (state.get('isList') && state.get('nextAnnotation')) { | ||
if (this.state.isList && node.next) { | ||
newlines += '\n'; | ||
@@ -149,3 +192,3 @@ } | ||
} | ||
else if (props.style === 'block') { | ||
else if (node.attributes.style === 'block') { | ||
return code.split('\n').map((line) => ` ${line}`).join('\n') + '\n'; | ||
@@ -163,8 +206,8 @@ } | ||
} | ||
*'html'(props, state) { | ||
state.push({ isPreformatted: true, htmlSafe: true }); | ||
let text = yield; | ||
state.pop(); | ||
let html = text.join(''); | ||
if (props.type === 'block') { | ||
*'html'(node) { | ||
let state = Object.assign({}, this.state); | ||
Object.assign(this.state, { isPreformatted: true, htmlSafe: true }); | ||
let html = yield; | ||
this.state = state; | ||
if (node.attributes.type === 'block') { | ||
return html + '\n'; | ||
@@ -174,13 +217,12 @@ } | ||
} | ||
*'list-item'(_, state) { | ||
let digit = state.get('digit'); | ||
let delimiter = state.get('delimiter'); | ||
*'list-item'(node, state) { | ||
let digit = this.state.digit; | ||
let delimiter = this.state.delimiter; | ||
let marker = delimiter; | ||
if (state.get('type') === 'numbered') { | ||
if (this.state.type === 'numbered') { | ||
marker = `${digit}${delimiter}`; | ||
state.set('digit', digit + 1); | ||
this.state.digit++; | ||
} | ||
let indent = ' '.repeat(marker.length + 1); | ||
let text = yield; | ||
let item = text.join(''); | ||
let item = yield; | ||
let firstCharacter = 0; | ||
@@ -194,3 +236,6 @@ while (item[firstCharacter] === ' ') | ||
item = ' '.repeat(firstCharacter) + first + '\n' + rest.map(line => indent + line).join('\n').replace(/[ ]+$/, ''); | ||
if (state.get('hasCodeBlockFollowing')) { | ||
if (this.state.tight) { | ||
item = item.replace(/([ \n])+$/, '\n'); | ||
} | ||
if (this.state.hasCodeBlockFollowing) { | ||
return ` ${marker} ${item}`; | ||
@@ -200,53 +245,55 @@ } | ||
} | ||
*'list'(props, state) { | ||
*'list'(node) { | ||
let start = 1; | ||
if (props && props.startsAt != null) { | ||
start = props.startsAt; | ||
if (node.attributes.startsAt != null) { | ||
start = node.attributes.startsAt; | ||
} | ||
let delimiter = ''; | ||
if (props.type === 'numbered') { | ||
if (node.attributes.type === 'numbered') { | ||
delimiter = '.'; | ||
if (state.get('previous.type') === 'numbered' && | ||
state.get('previous.delimiter') === '.') { | ||
if (node.previous && | ||
node.previous.type === 'list' && | ||
node.previous.attributes.type === 'numbered' && | ||
node.previous.delimiter === '.') { | ||
delimiter = ')'; | ||
} | ||
} | ||
else if (props.type === 'bulleted') { | ||
else if (node.attributes.type === 'bulleted') { | ||
delimiter = '-'; | ||
if (state.get('previous.type') === 'bulleted' && | ||
state.get('previous.delimiter') === '-') { | ||
if (node.previous && | ||
node.previous.type === 'list' && | ||
node.previous.attributes.type === 'bulleted' && | ||
node.previous.delimiter === '-') { | ||
delimiter = '+'; | ||
} | ||
} | ||
let hasCodeBlockFollowing = state.get('nextAnnotation.type') === 'code' && | ||
state.get('nextAnnotation.attributes.style') === 'block'; | ||
state.push({ | ||
node.delimiter = delimiter; | ||
let state = Object.assign({}, this.state); | ||
let hasCodeBlockFollowing = node.next && | ||
node.next.type === 'code' && | ||
node.next.attributes.style === 'block'; | ||
Object.assign(this.state, { | ||
isList: true, | ||
type: props.type, | ||
type: node.attributes.type, | ||
digit: start, | ||
previous: state.get('previous'), | ||
delimiter, | ||
hasCodeBlockFollowing, | ||
tight: props && props.tight | ||
tight: node.attributes.tight, | ||
hasCodeBlockFollowing | ||
}); | ||
let list = yield; | ||
state.pop(); | ||
if (props && props.tight) { | ||
list = list.map(item => item.replace(/([ \n])+$/, '\n')); | ||
} | ||
state.set('previous', { | ||
isList: true, | ||
type: props.type, | ||
delimiter | ||
}); | ||
return list.join('') + '\n'; | ||
this.state = state; | ||
return list + '\n'; | ||
} | ||
*'paragraph'(_, state) { | ||
*'paragraph'() { | ||
let text = yield; | ||
if (state.get('tight')) { | ||
return text.join('') + '\n'; | ||
if (this.state.tight) { | ||
return text + '\n'; | ||
} | ||
return text.join('') + '\n\n'; | ||
return text + '\n\n'; | ||
} | ||
render(document) { | ||
let graph = new HIR(document); | ||
return render(this, graph.rootNode); | ||
} | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxRQUFtQixNQUFNLHNCQUFzQixDQUFDO0FBRXZELE1BQU0sU0FBUyxDQUFDO0lBQ2QsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUV0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLElBQUksS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQUMsS0FBSyxFQUFFLENBQUM7SUFBQyxDQUFDO0lBQ3ZELE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQUMsR0FBRyxFQUFFLENBQUM7SUFBQyxDQUFDO0lBRXZELE1BQU0sQ0FBQztRQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7UUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7S0FDaEIsQ0FBQztBQUNKLENBQUM7QUFLRCwyQkFBMkIsSUFBWTtJQUNyQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQ0FBb0MsRUFBRSxNQUFNLENBQUM7U0FDckQsT0FBTyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUM7U0FDNUIsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7U0FDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxN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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEdBQUcsRUFBVyxNQUFNLGFBQWEsQ0FBQztBQUczQyxNQUFNLFNBQVMsQ0FBQztJQUNkLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQztJQUNqQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDZCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBRXRCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFBQyxLQUFLLEVBQUUsQ0FBQztJQUFDLENBQUM7SUFDdkQsT0FBTyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxHQUFHLEdBQUcsS0FBSyxFQUFFLENBQUM7UUFBQyxHQUFHLEVBQUUsQ0FBQztJQUFDLENBQUM7SUFFdkQsTUFBTSxDQUFDO1FBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztRQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztLQUNoQixDQUFDO0FBQ0osQ0FBQztBQUtELDJCQUEyQixJQUFZO0lBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9DQUFvQyxFQUFFLE1BQU0sQ0FBQztTQUNyRCxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztTQUM1QixPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztTQUN0QixPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztTQUNyQixPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRCx5QkFBeUIsSUFBWTtJQUNuQyxN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 |
{ | ||
"name": "@atjson/renderer-commonmark", | ||
"version": "0.7.5", | ||
"version": "0.7.9", | ||
"description": "A brand new TypeScript library.", | ||
@@ -20,3 +20,3 @@ "main": "dist/commonjs/index.js", | ||
"@atjson/hir": "^0.7.2", | ||
"@atjson/source-commonmark": "^0.7.5", | ||
"@atjson/source-commonmark": "^0.7.9", | ||
"commonmark-spec": "^0.28.0", | ||
@@ -23,0 +23,0 @@ "tslint": "^5.9.1", |
250
src/index.ts
@@ -1,7 +0,7 @@ | ||
import { HIRNode } from '@atjson/hir'; | ||
import Document from '@atjson/document'; | ||
import { HIR, HIRNode } from '@atjson/hir'; | ||
import Renderer, { State } from '@atjson/renderer-hir'; | ||
export function* split(): IterableIterator<string> { | ||
let rawText = yield; | ||
let text = rawText.join(''); | ||
let text = yield; | ||
let start = 0; | ||
@@ -56,6 +56,52 @@ let end = text.length; | ||
export default class CommonmarkRenderer extends Renderer { | ||
function render(renderer: CommonMarkRenderer, node: HIRNode, parent?: HIRNode, index?: number): string { | ||
if (index > 0) { | ||
node.previous = parent.children[index - 1]; | ||
} else { | ||
node.previous = null; | ||
} | ||
renderText(text: string, state: State) { | ||
if (state.get('isPreformatted')) { | ||
if (parent && index < parent.children.length) { | ||
node.next = parent.children[index + 1]; | ||
} else { | ||
node.next = null; | ||
} | ||
node.parent = parent; | ||
node.children = node.children(); | ||
let generator; | ||
if (renderer[node.type]) { | ||
generator = renderer[node.type](node, parent); | ||
let result = generator.next(); | ||
if (result.done) { | ||
return result.value; | ||
} | ||
} | ||
let fragment = node.children.map((childNode: HIRNode, idx: number) => { | ||
if (childNode.type === 'text' && typeof childNode.text === 'string') { | ||
return renderer.text(childNode.text); | ||
} else { | ||
return render(renderer, childNode, node, idx); | ||
} | ||
}).join(''); | ||
if (generator) { | ||
return generator.next(fragment).value; | ||
} else { | ||
return fragment; | ||
} | ||
} | ||
export default class CommonmarkRenderer { | ||
state: any; | ||
constructor() { | ||
this.state = {}; | ||
} | ||
text(text: string) { | ||
if (this.state.isPreformatted) { | ||
return text; | ||
@@ -67,12 +113,2 @@ } | ||
/** | ||
* The root allows us to normalize the document | ||
* after all annotations have been rendered to | ||
* CommonMark. | ||
*/ | ||
*'root'(): IterableIterator<string> { | ||
let document = yield; | ||
return document.join(''); | ||
} | ||
/** | ||
* Bold text looks like **this** in Markdown. | ||
@@ -83,4 +119,8 @@ * | ||
*/ | ||
*'bold'(): IterableIterator<string> { | ||
*'bold'(node: HIRNode): IterableIterator<string> { | ||
let [before, text, after] = yield* split(); | ||
if (node.parent && !node.previous && !node.next && | ||
node.parent.type === 'italic') { | ||
return `${before}__${text}__${after}`; | ||
} | ||
return `${before}**${text}**${after}`; | ||
@@ -95,5 +135,5 @@ } | ||
*/ | ||
*'quotation'(_: any, state: State): IterableIterator<string> { | ||
let text: string[] = yield; | ||
let lines: string[] = text.join('').split('\n'); | ||
*'blockquote'(): IterableIterator<string> { | ||
let text = yield; | ||
let lines: string[] = text.split('\n'); | ||
let endOfQuote = lines.length; | ||
@@ -107,3 +147,3 @@ let startOfQuote = 0; | ||
if (!state.get('tight')) { | ||
if (!this.state.tight) { | ||
quote += '\n'; | ||
@@ -123,12 +163,11 @@ } | ||
*/ | ||
*'heading'(props: { level: number }): IterableIterator<string> { | ||
let text = yield; | ||
let level = new Array(props.level + 1).join('#'); | ||
let heading = text.join(''); | ||
*'heading'(node: HIRNode): IterableIterator<string> { | ||
let heading = yield; | ||
let level = new Array(node.attributes.level + 1).join('#'); | ||
// Multiline headings are supported for level 1 and 2 | ||
if (heading.indexOf('\n') !== -1) { | ||
if (props.level === 1) { | ||
if (node.attributes.level === 1) { | ||
return `${heading}\n====\n`; | ||
} else if (props.level === 2) { | ||
} else if (node.attributes.level === 2) { | ||
return `${heading}\n----\n`; | ||
@@ -153,8 +192,8 @@ } | ||
*/ | ||
*'image'(props: { description: string, title?: string, url: string }): IterableIterator<string> { | ||
if (props.title) { | ||
let title = props.title.replace(/"/g, '\\"'); | ||
return `![${props.description}](${props.url} "${title}")`; | ||
*'image'(node: HIRNode): IterableIterator<string> { | ||
if (node.attributes.title) { | ||
let title = node.attributes.title.replace(/"/g, '\\"'); | ||
return `![${node.attributes.description}](${node.attributes.url} "${title}")`; | ||
} | ||
return `![${props.description}](${props.url})`; | ||
return `![${node.attributes.description}](${node.attributes.url})`; | ||
} | ||
@@ -165,10 +204,17 @@ | ||
*/ | ||
*'italic'(_: any, state: State): IterableIterator<string> { | ||
*'italic'(node: HIRNode): IterableIterator<string> { | ||
// This adds support for strong emphasis (per Commonmark) | ||
// Strong emphasis includes _*two*_ emphasis markers around text. | ||
let isItalicized = state.get('isItalicized'); | ||
state.set('isItalicized', true); | ||
let state = Object.assign({}, this.state); | ||
this.state.isItalicized = true; | ||
let [before, text, after] = yield* split(); | ||
state.set('isItalicized', isItalicized); | ||
let markup = isItalicized ? '_' : '*'; | ||
let markup = state.isItalicized ? '_' : '*'; | ||
if (node.parent && !node.previous && !node.next && | ||
node.parent.type === 'bold') { | ||
markup = '_'; | ||
} | ||
this.state = state; | ||
return `${before}${markup}${text}${markup}${after}`; | ||
@@ -188,7 +234,7 @@ } | ||
*/ | ||
*'link'(props: { url: string, title?: string }): IterableIterator<string> { | ||
*'link'(node: HIRNode): IterableIterator<string> { | ||
let [before, text, after] = yield* split(); | ||
let url = escapeAttribute(props.url); | ||
if (props.title) { | ||
let title = props.title.replace(/"/g, '\\"'); | ||
let url = escapeAttribute(node.attributes.url); | ||
if (node.attributes.title) { | ||
let title = node.attributes.title.replace(/"/g, '\\"'); | ||
return `${before}[${text}](${url} "${title}")${after}`; | ||
@@ -206,13 +252,14 @@ } | ||
*/ | ||
*'code'(props: { style: CodeStyle, info?: string }, state: State): IterableIterator<string> { | ||
state.push({ isPreformatted: true, htmlSafe: false }); | ||
let text = yield; | ||
state.pop(); | ||
let code = text.join(''); | ||
*'code'(node: HIRNode): IterableIterator<string> { | ||
let state = Object.assign({}, this.state); | ||
Object.assign(this.state, { isPreformatted: true, htmlSafe: true }); | ||
if (props.style === 'fence') { | ||
let code = yield; | ||
this.state = state; | ||
if (node.attributes.style === 'fence') { | ||
code = '\n' + code; | ||
let info = props.info || ''; | ||
let info = node.attributes.info || ''; | ||
let newlines = '\n'; | ||
if (state.get('isList') && state.get('nextAnnotation')) { | ||
if (this.state.isList && node.next) { | ||
newlines += '\n'; | ||
@@ -226,3 +273,3 @@ } | ||
} | ||
} else if (props.style === 'block') { | ||
} else if (node.attributes.style === 'block') { | ||
return code.split('\n').map((line: string) => ` ${line}`).join('\n') + '\n'; | ||
@@ -244,8 +291,11 @@ } else { | ||
*'html'(props: { type: string }, state: State): IterableIterator<string> { | ||
state.push({ isPreformatted: true, htmlSafe: true }); | ||
let text = yield; | ||
state.pop(); | ||
let html = text.join(''); | ||
if (props.type === 'block') { | ||
*'html'(node: HIRNode): IterableIterator<string> { | ||
let state = Object.assign({}, this.state); | ||
Object.assign(this.state, { isPreformatted: true, htmlSafe: true }); | ||
let html = yield; | ||
this.state = state; | ||
if (node.attributes.type === 'block') { | ||
return html + '\n'; | ||
@@ -259,14 +309,13 @@ } | ||
*/ | ||
*'list-item'(_: any, state: State): IterableIterator<string> { | ||
let digit: number = state.get('digit'); | ||
let delimiter = state.get('delimiter'); | ||
*'list-item'(node: HIRNode, state: State): IterableIterator<string> { | ||
let digit: number = this.state.digit; | ||
let delimiter = this.state.delimiter; | ||
let marker: string = delimiter; | ||
if (state.get('type') === 'numbered') { | ||
if (this.state.type === 'numbered') { | ||
marker = `${digit}${delimiter}`; | ||
state.set('digit', digit + 1); | ||
this.state.digit++; | ||
} | ||
let indent = ' '.repeat(marker.length + 1); | ||
let text: string[] = yield; | ||
let item: string = text.join(''); | ||
let item: string = yield; | ||
let firstCharacter = 0; | ||
@@ -282,2 +331,6 @@ while (item[firstCharacter] === ' ') firstCharacter++; | ||
if (this.state.tight) { | ||
item = item.replace(/([ \n])+$/, '\n'); | ||
} | ||
// Code blocks using spaces can follow lists, | ||
@@ -288,3 +341,3 @@ // however, they will be included in the list | ||
// See http://spec.commonmark.org/dingus/?text=%20-%20%20%20hello%0A%0A%20%20%20%20I%27m%20a%20code%20block%20_outside_%20the%20list%0A | ||
if (state.get('hasCodeBlockFollowing')) { | ||
if (this.state.hasCodeBlockFollowing) { | ||
return ` ${marker} ${item}`; | ||
@@ -300,54 +353,50 @@ } | ||
*/ | ||
*'list'(props: { type: string, startsAt?: number, tight: boolean }, state: State): IterableIterator<string> { | ||
*'list'(node: HIRNode): IterableIterator<string> { | ||
let start = 1; | ||
if (props && props.startsAt != null) { | ||
start = props.startsAt; | ||
if (node.attributes.startsAt != null) { | ||
start = node.attributes.startsAt; | ||
} | ||
let delimiter = ''; | ||
if (props.type === 'numbered') { | ||
if (node.attributes.type === 'numbered') { | ||
delimiter = '.'; | ||
if (state.get('previous.type') === 'numbered' && | ||
state.get('previous.delimiter') === '.') { | ||
if (node.previous && | ||
node.previous.type === 'list' && | ||
node.previous.attributes.type === 'numbered' && | ||
node.previous.delimiter === '.') { | ||
delimiter = ')'; | ||
} | ||
} else if (props.type === 'bulleted') { | ||
} else if (node.attributes.type === 'bulleted') { | ||
delimiter = '-'; | ||
if (state.get('previous.type') === 'bulleted' && | ||
state.get('previous.delimiter') === '-') { | ||
if (node.previous && | ||
node.previous.type === 'list' && | ||
node.previous.attributes.type === 'bulleted' && | ||
node.previous.delimiter === '-') { | ||
delimiter = '+'; | ||
} | ||
} | ||
node.delimiter = delimiter; | ||
// Handle indendation for code blocks that immediately follow | ||
// a list. | ||
let hasCodeBlockFollowing = state.get('nextAnnotation.type') === 'code' && | ||
state.get('nextAnnotation.attributes.style') === 'block'; | ||
let state = Object.assign({}, this.state); | ||
state.push({ | ||
// Handle indendation for code blocks that immediately follow a list. | ||
let hasCodeBlockFollowing = node.next && | ||
node.next.type === 'code' && | ||
node.next.attributes.style === 'block'; | ||
Object.assign(this.state, { | ||
isList: true, | ||
type: props.type, | ||
type: node.attributes.type, | ||
digit: start, | ||
previous: state.get('previous'), | ||
delimiter, | ||
hasCodeBlockFollowing, | ||
tight: props && props.tight | ||
tight: node.attributes.tight, | ||
hasCodeBlockFollowing | ||
}); | ||
let list: string[] = yield; | ||
state.pop(); | ||
if (props && props.tight) { | ||
list = list.map(item => item.replace(/([ \n])+$/, '\n')); | ||
} | ||
let list = yield; | ||
state.set('previous', { | ||
isList: true, | ||
type: props.type, | ||
delimiter | ||
}); | ||
return list.join('') + '\n'; | ||
this.state = state; | ||
return list + '\n'; | ||
} | ||
@@ -358,9 +407,14 @@ | ||
*/ | ||
*'paragraph'(_: any, state: State): IterableIterator<string> { | ||
*'paragraph'(): IterableIterator<string> { | ||
let text = yield; | ||
if (state.get('tight')) { | ||
return text.join('') + '\n'; | ||
if (this.state.tight) { | ||
return text + '\n'; | ||
} | ||
return text.join('') + '\n\n'; | ||
return text + '\n\n'; | ||
}, | ||
render(document: Document): string { | ||
let graph = new HIR(document); | ||
return render(this, graph.rootNode); | ||
} | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
64300
8
968
1