Comparing version 2.6.1 to 2.7.0
@@ -5,2 +5,4 @@ module.exports = compileHtml | ||
var assign = require('../constant/assign') | ||
var own = require('../constant/has-own-property') | ||
@@ -11,2 +13,3 @@ | ||
var safeFromInt = require('../util/safe-from-int') | ||
var combineExtensions = require('../util/combine-html-extensions') | ||
@@ -29,90 +32,102 @@ var characterReferences = {'"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'} | ||
var handlers = configure( | ||
{ | ||
enter: { | ||
blockQuote: onenterblockquote, | ||
codeFenced: onentercodefenced, | ||
codeFencedFenceInfo: buffer, | ||
codeFencedFenceMeta: buffer, | ||
codeIndented: onentercodeindented, | ||
codeText: onentercodetext, | ||
content: onentercontent, | ||
definition: onenterdefinition, | ||
definitionDestinationString: onenterdefinitiondestinationstring, | ||
definitionLabelString: buffer, | ||
definitionTitleString: buffer, | ||
emphasis: onenteremphasis, | ||
htmlFlow: onenterhtmlflow, | ||
htmlText: onenterhtml, | ||
image: onenterimage, | ||
label: buffer, | ||
link: onentermedia, | ||
listItemMarker: onenterlistitemmarker, | ||
listItemValue: onenterlistitemvalue, | ||
listOrdered: onenterlistordered, | ||
listUnordered: onenterlistunordered, | ||
paragraph: onenterparagraph, | ||
reference: onenterreference, | ||
resource: onenterresource, | ||
resourceDestinationString: onenterresourcedestinationstring, | ||
resourceTitleString: buffer, | ||
setextHeading: onentersetextheading, | ||
strong: onenterstrong | ||
}, | ||
var handlers = combineExtensions( | ||
[ | ||
{ | ||
enter: { | ||
blockQuote: onenterblockquote, | ||
codeFenced: onentercodefenced, | ||
codeFencedFenceInfo: buffer, | ||
codeFencedFenceMeta: buffer, | ||
codeIndented: onentercodeindented, | ||
codeText: onentercodetext, | ||
content: onentercontent, | ||
definition: onenterdefinition, | ||
definitionDestinationString: onenterdefinitiondestinationstring, | ||
definitionLabelString: buffer, | ||
definitionTitleString: buffer, | ||
emphasis: onenteremphasis, | ||
htmlFlow: onenterhtmlflow, | ||
htmlText: onenterhtml, | ||
image: onenterimage, | ||
label: buffer, | ||
link: onentermedia, | ||
listItemMarker: onenterlistitemmarker, | ||
listItemValue: onenterlistitemvalue, | ||
listOrdered: onenterlistordered, | ||
listUnordered: onenterlistunordered, | ||
paragraph: onenterparagraph, | ||
reference: onenterreference, | ||
resource: onenterresource, | ||
resourceDestinationString: onenterresourcedestinationstring, | ||
resourceTitleString: buffer, | ||
setextHeading: onentersetextheading, | ||
strong: onenterstrong | ||
}, | ||
exit: { | ||
atxHeading: onexitatxheading, | ||
atxHeadingSequence: onexitatxheadingsequence, | ||
autolinkEmail: onexitautolinkemail, | ||
autolinkProtocol: onexitautolinkprotocol, | ||
blockQuote: onexitblockquote, | ||
characterEscapeValue: onexitcharacterescapevalue, | ||
characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, | ||
characterReferenceMarkerNumeric: onexitcharacterreferencemarker, | ||
characterReferenceValue: onexitcharacterreferencevalue, | ||
codeFenced: onexitflowcode, | ||
codeFencedFence: onexitcodefencedfence, | ||
codeFencedFenceInfo: onexitcodefencedfenceinfo, | ||
codeFencedFenceMeta: resume, | ||
codeFlowValue: onexitcodeflowvalue, | ||
codeIndented: onexitflowcode, | ||
codeText: onexitcodetext, | ||
codeTextData: onexitdata, | ||
data: onexitdata, | ||
definition: onexitdefinition, | ||
definitionDestinationString: onexitdefinitiondestinationstring, | ||
definitionLabelString: onexitdefinitionlabelstring, | ||
definitionTitleString: onexitdefinitiontitlestring, | ||
emphasis: onexitemphasis, | ||
hardBreakEscape: onexithardbreak, | ||
hardBreakTrailing: onexithardbreak, | ||
htmlFlow: onexithtml, | ||
htmlFlowData: onexitdata, | ||
htmlText: onexithtml, | ||
htmlTextData: onexitdata, | ||
image: onexitmedia, | ||
label: onexitlabel, | ||
labelText: onexitlabeltext, | ||
lineEnding: onexitlineending, | ||
link: onexitmedia, | ||
listOrdered: onexitlistordered, | ||
listUnordered: onexitlistunordered, | ||
paragraph: onexitparagraph, | ||
reference: onexitreference, | ||
referenceString: onexitreferencestring, | ||
resource: resume, | ||
resourceDestinationString: onexitresourcedestinationstring, | ||
resourceTitleString: onexitresourcetitlestring, | ||
setextHeading: onexitsetextheading, | ||
setextHeadingLineSequence: onexitsetextheadinglinesequence, | ||
setextHeadingText: onexitsetextheadingtext, | ||
strong: onexitstrong, | ||
thematicBreak: onexitthematicbreak | ||
exit: { | ||
atxHeading: onexitatxheading, | ||
atxHeadingSequence: onexitatxheadingsequence, | ||
autolinkEmail: onexitautolinkemail, | ||
autolinkProtocol: onexitautolinkprotocol, | ||
blockQuote: onexitblockquote, | ||
characterEscapeValue: onexitcharacterescapevalue, | ||
characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, | ||
characterReferenceMarkerNumeric: onexitcharacterreferencemarker, | ||
characterReferenceValue: onexitcharacterreferencevalue, | ||
codeFenced: onexitflowcode, | ||
codeFencedFence: onexitcodefencedfence, | ||
codeFencedFenceInfo: onexitcodefencedfenceinfo, | ||
codeFencedFenceMeta: resume, | ||
codeFlowValue: onexitcodeflowvalue, | ||
codeIndented: onexitflowcode, | ||
codeText: onexitcodetext, | ||
codeTextData: onexitdata, | ||
data: onexitdata, | ||
definition: onexitdefinition, | ||
definitionDestinationString: onexitdefinitiondestinationstring, | ||
definitionLabelString: onexitdefinitionlabelstring, | ||
definitionTitleString: onexitdefinitiontitlestring, | ||
emphasis: onexitemphasis, | ||
hardBreakEscape: onexithardbreak, | ||
hardBreakTrailing: onexithardbreak, | ||
htmlFlow: onexithtml, | ||
htmlFlowData: onexitdata, | ||
htmlText: onexithtml, | ||
htmlTextData: onexitdata, | ||
image: onexitmedia, | ||
label: onexitlabel, | ||
labelText: onexitlabeltext, | ||
lineEnding: onexitlineending, | ||
link: onexitmedia, | ||
listOrdered: onexitlistordered, | ||
listUnordered: onexitlistunordered, | ||
paragraph: onexitparagraph, | ||
reference: onexitreference, | ||
referenceString: onexitreferencestring, | ||
resource: resume, | ||
resourceDestinationString: onexitresourcedestinationstring, | ||
resourceTitleString: onexitresourcetitlestring, | ||
setextHeading: onexitsetextheading, | ||
setextHeadingLineSequence: onexitsetextheadinglinesequence, | ||
setextHeadingText: onexitsetextheadingtext, | ||
strong: onexitstrong, | ||
thematicBreak: onexitthematicbreak | ||
} | ||
} | ||
}, | ||
settings.htmlExtensions || [] | ||
].concat(settings.htmlExtensions || []) | ||
) | ||
var data = {} | ||
var context = { | ||
lineEndingIfNeeded: lineEndingIfNeeded, | ||
options: settings, | ||
encode: encode, | ||
raw: raw, | ||
tag: tag, | ||
buffer: buffer, | ||
resume: resume, | ||
setData: setData, | ||
getData: getData | ||
} | ||
var lineEndingStyle = settings.defaultLineEnding | ||
@@ -173,4 +188,9 @@ var media | ||
result = head.concat(body, events.slice(start, length)) | ||
index = -1 | ||
if (handlers.enter.null) { | ||
handlers.enter.null.call(context) | ||
} | ||
while (++index < length) { | ||
@@ -181,15 +201,3 @@ handler = handlers[result[index][0]] | ||
handler[result[index][1].type].call( | ||
{ | ||
sliceSerialize: result[index][2].sliceSerialize, | ||
lineEndingIfNeeded: lineEndingIfNeeded, | ||
options: settings, | ||
encode: encode, | ||
raw: raw, | ||
tag: tag, | ||
buffer: buffer, | ||
resume: resume, | ||
setData: setData, | ||
getData: getData | ||
}, | ||
assign({sliceSerialize: result[index][2].sliceSerialize}, context), | ||
result[index][1] | ||
@@ -200,2 +208,6 @@ ) | ||
if (handlers.exit.null) { | ||
handlers.exit.null.call(context) | ||
} | ||
return buffers[0].join('') | ||
@@ -746,28 +758,1 @@ } | ||
} | ||
function configure(handlers, extensions) { | ||
var length = extensions.length | ||
var index = -1 | ||
while (++index < length) { | ||
extension(handlers, extensions[index]) | ||
} | ||
return handlers | ||
} | ||
function extension(handlers, extension) { | ||
var hook | ||
var left | ||
var right | ||
var type | ||
for (hook in extension) { | ||
left = own.call(handlers, hook) ? handlers[hook] : (handlers[hook] = {}) | ||
right = extension[hook] | ||
for (type in right) { | ||
left[type] = right[type] | ||
} | ||
} | ||
} |
module.exports = createParser | ||
var own = require('./constant/has-own-property') | ||
var initializeContent = require('./initialize/content') | ||
@@ -11,2 +10,3 @@ var initializeDocument = require('./initialize/document') | ||
var createTokenizer = require('./util/create-tokenizer') | ||
var combineExtensions = require('./util/combine-extensions') | ||
@@ -19,3 +19,6 @@ function createParser(options) { | ||
defined: [], | ||
constructs: configure([constructs].concat(settings.extensions || [])), | ||
constructs: combineExtensions( | ||
[constructs].concat(settings.extensions || []) | ||
), | ||
content: create(initializeContent), | ||
@@ -37,37 +40,1 @@ document: create(initializeDocument), | ||
} | ||
function configure(extensions) { | ||
var all = {} | ||
var length = extensions.length | ||
var index = -1 | ||
while (++index < length) { | ||
extension(all, extensions[index]) | ||
} | ||
return all | ||
} | ||
function extension(all, extension) { | ||
var hook | ||
var left | ||
var right | ||
var code | ||
var constructs | ||
for (hook in extension) { | ||
left = own.call(all, hook) ? all[hook] : (all[hook] = {}) | ||
right = extension[hook] | ||
for (code in right) { | ||
// Note: we prefer the extension over existing constructs. | ||
// There’s no other precedence. | ||
constructs = [].concat( | ||
right[code], | ||
own.call(left, code) ? left[code] : [] | ||
) | ||
left[code] = constructs.length === 1 ? constructs[0] : constructs | ||
} | ||
} | ||
} |
@@ -38,2 +38,3 @@ exports.tokenize = tokenizeDefinition | ||
function tokenizeDefinition(effects, ok, nok) { | ||
var self = this | ||
var atEnd = effects.attempt(createSpaceTokenizer('whitespace'), after) | ||
@@ -57,5 +58,15 @@ var destinationAfter = effects.attempt(title, atEnd, atEnd) | ||
effects.enter('definitionLabelString') | ||
return atBreak | ||
return atStart | ||
} | ||
function atStart(code) { | ||
/* istanbul ignore next - the footnote plugin turns of definitions when they | ||
* start with a caret. */ | ||
if ('_hiddenFootnoteSupport' in self.parser.constructs && code === 94) { | ||
return nok(code) | ||
} | ||
return atBreak(code) | ||
} | ||
function atBreak(code) { | ||
@@ -62,0 +73,0 @@ if (code === null || code === 91 || size > 999) { |
@@ -451,5 +451,15 @@ exports.tokenize = tokenizeLabelEnd | ||
effects.enter('chunkString').contentType = 'string' | ||
return referenceData | ||
return atStart | ||
} | ||
function atStart(code) { | ||
/* istanbul ignore next - the footnote plugin turns of refereences when they | ||
* start with a caret. */ | ||
if ('_hiddenFootnoteSupport' in self.parser.constructs && code === 94) { | ||
return nok(code) | ||
} | ||
return referenceData(code) | ||
} | ||
function referenceData(code) { | ||
@@ -456,0 +466,0 @@ var token |
@@ -5,2 +5,4 @@ exports.tokenize = tokenizelabelImage | ||
function tokenizelabelImage(effects, ok, nok) { | ||
var self = this | ||
return start | ||
@@ -27,3 +29,3 @@ | ||
effects.exit('labelImage') | ||
return ok | ||
return after | ||
} | ||
@@ -33,2 +35,12 @@ | ||
} | ||
function after(code) { | ||
/* istanbul ignore next - the footnote plugin turns of images when they | ||
* start with a caret. */ | ||
if ('_hiddenFootnoteSupport' in self.parser.constructs && code === 94) { | ||
return nok(code) | ||
} | ||
return ok(code) | ||
} | ||
} |
@@ -5,2 +5,4 @@ exports.tokenize = tokenizelabelLink | ||
function tokenizelabelLink(effects, ok, nok) { | ||
var self = this | ||
return start | ||
@@ -19,4 +21,14 @@ | ||
effects.exit('labelLink') | ||
return ok | ||
return after | ||
} | ||
function after(code) { | ||
/* istanbul ignore next - the footnote plugin turns of links when they start | ||
* with a caret. */ | ||
if ('_hiddenFootnoteSupport' in self.parser.constructs && code === 94) { | ||
return nok(code) | ||
} | ||
return ok(code) | ||
} | ||
} |
@@ -6,2 +6,3 @@ module.exports = compileHtml | ||
var codes = require('../character/codes') | ||
var assign = require('../constant/assign') | ||
var constants = require('../constant/constants') | ||
@@ -13,2 +14,3 @@ var own = require('../constant/has-own-property') | ||
var safeFromInt = require('../util/safe-from-int') | ||
var combineExtensions = require('../util/combine-html-extensions') | ||
@@ -31,88 +33,100 @@ var characterReferences = {'"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'} | ||
var handlers = configure( | ||
{ | ||
enter: { | ||
blockQuote: onenterblockquote, | ||
codeFenced: onentercodefenced, | ||
codeFencedFenceInfo: buffer, | ||
codeFencedFenceMeta: buffer, | ||
codeIndented: onentercodeindented, | ||
codeText: onentercodetext, | ||
content: onentercontent, | ||
definition: onenterdefinition, | ||
definitionDestinationString: onenterdefinitiondestinationstring, | ||
definitionLabelString: buffer, | ||
definitionTitleString: buffer, | ||
emphasis: onenteremphasis, | ||
htmlFlow: onenterhtmlflow, | ||
htmlText: onenterhtml, | ||
image: onenterimage, | ||
label: buffer, | ||
link: onentermedia, | ||
listItemMarker: onenterlistitemmarker, | ||
listItemValue: onenterlistitemvalue, | ||
listOrdered: onenterlistordered, | ||
listUnordered: onenterlistunordered, | ||
paragraph: onenterparagraph, | ||
reference: onenterreference, | ||
resource: onenterresource, | ||
resourceDestinationString: onenterresourcedestinationstring, | ||
resourceTitleString: buffer, | ||
setextHeading: onentersetextheading, | ||
strong: onenterstrong | ||
}, | ||
exit: { | ||
atxHeading: onexitatxheading, | ||
atxHeadingSequence: onexitatxheadingsequence, | ||
autolinkEmail: onexitautolinkemail, | ||
autolinkProtocol: onexitautolinkprotocol, | ||
blockQuote: onexitblockquote, | ||
characterEscapeValue: onexitcharacterescapevalue, | ||
characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, | ||
characterReferenceMarkerNumeric: onexitcharacterreferencemarker, | ||
characterReferenceValue: onexitcharacterreferencevalue, | ||
codeFenced: onexitflowcode, | ||
codeFencedFence: onexitcodefencedfence, | ||
codeFencedFenceInfo: onexitcodefencedfenceinfo, | ||
codeFencedFenceMeta: resume, | ||
codeFlowValue: onexitcodeflowvalue, | ||
codeIndented: onexitflowcode, | ||
codeText: onexitcodetext, | ||
codeTextData: onexitdata, | ||
data: onexitdata, | ||
definition: onexitdefinition, | ||
definitionDestinationString: onexitdefinitiondestinationstring, | ||
definitionLabelString: onexitdefinitionlabelstring, | ||
definitionTitleString: onexitdefinitiontitlestring, | ||
emphasis: onexitemphasis, | ||
hardBreakEscape: onexithardbreak, | ||
hardBreakTrailing: onexithardbreak, | ||
htmlFlow: onexithtml, | ||
htmlFlowData: onexitdata, | ||
htmlText: onexithtml, | ||
htmlTextData: onexitdata, | ||
image: onexitmedia, | ||
label: onexitlabel, | ||
labelText: onexitlabeltext, | ||
lineEnding: onexitlineending, | ||
link: onexitmedia, | ||
listOrdered: onexitlistordered, | ||
listUnordered: onexitlistunordered, | ||
paragraph: onexitparagraph, | ||
reference: onexitreference, | ||
referenceString: onexitreferencestring, | ||
resource: resume, | ||
resourceDestinationString: onexitresourcedestinationstring, | ||
resourceTitleString: onexitresourcetitlestring, | ||
setextHeading: onexitsetextheading, | ||
setextHeadingLineSequence: onexitsetextheadinglinesequence, | ||
setextHeadingText: onexitsetextheadingtext, | ||
strong: onexitstrong, | ||
thematicBreak: onexitthematicbreak | ||
var handlers = combineExtensions( | ||
[ | ||
{ | ||
enter: { | ||
blockQuote: onenterblockquote, | ||
codeFenced: onentercodefenced, | ||
codeFencedFenceInfo: buffer, | ||
codeFencedFenceMeta: buffer, | ||
codeIndented: onentercodeindented, | ||
codeText: onentercodetext, | ||
content: onentercontent, | ||
definition: onenterdefinition, | ||
definitionDestinationString: onenterdefinitiondestinationstring, | ||
definitionLabelString: buffer, | ||
definitionTitleString: buffer, | ||
emphasis: onenteremphasis, | ||
htmlFlow: onenterhtmlflow, | ||
htmlText: onenterhtml, | ||
image: onenterimage, | ||
label: buffer, | ||
link: onentermedia, | ||
listItemMarker: onenterlistitemmarker, | ||
listItemValue: onenterlistitemvalue, | ||
listOrdered: onenterlistordered, | ||
listUnordered: onenterlistunordered, | ||
paragraph: onenterparagraph, | ||
reference: onenterreference, | ||
resource: onenterresource, | ||
resourceDestinationString: onenterresourcedestinationstring, | ||
resourceTitleString: buffer, | ||
setextHeading: onentersetextheading, | ||
strong: onenterstrong | ||
}, | ||
exit: { | ||
atxHeading: onexitatxheading, | ||
atxHeadingSequence: onexitatxheadingsequence, | ||
autolinkEmail: onexitautolinkemail, | ||
autolinkProtocol: onexitautolinkprotocol, | ||
blockQuote: onexitblockquote, | ||
characterEscapeValue: onexitcharacterescapevalue, | ||
characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker, | ||
characterReferenceMarkerNumeric: onexitcharacterreferencemarker, | ||
characterReferenceValue: onexitcharacterreferencevalue, | ||
codeFenced: onexitflowcode, | ||
codeFencedFence: onexitcodefencedfence, | ||
codeFencedFenceInfo: onexitcodefencedfenceinfo, | ||
codeFencedFenceMeta: resume, | ||
codeFlowValue: onexitcodeflowvalue, | ||
codeIndented: onexitflowcode, | ||
codeText: onexitcodetext, | ||
codeTextData: onexitdata, | ||
data: onexitdata, | ||
definition: onexitdefinition, | ||
definitionDestinationString: onexitdefinitiondestinationstring, | ||
definitionLabelString: onexitdefinitionlabelstring, | ||
definitionTitleString: onexitdefinitiontitlestring, | ||
emphasis: onexitemphasis, | ||
hardBreakEscape: onexithardbreak, | ||
hardBreakTrailing: onexithardbreak, | ||
htmlFlow: onexithtml, | ||
htmlFlowData: onexitdata, | ||
htmlText: onexithtml, | ||
htmlTextData: onexitdata, | ||
image: onexitmedia, | ||
label: onexitlabel, | ||
labelText: onexitlabeltext, | ||
lineEnding: onexitlineending, | ||
link: onexitmedia, | ||
listOrdered: onexitlistordered, | ||
listUnordered: onexitlistunordered, | ||
paragraph: onexitparagraph, | ||
reference: onexitreference, | ||
referenceString: onexitreferencestring, | ||
resource: resume, | ||
resourceDestinationString: onexitresourcedestinationstring, | ||
resourceTitleString: onexitresourcetitlestring, | ||
setextHeading: onexitsetextheading, | ||
setextHeadingLineSequence: onexitsetextheadinglinesequence, | ||
setextHeadingText: onexitsetextheadingtext, | ||
strong: onexitstrong, | ||
thematicBreak: onexitthematicbreak | ||
} | ||
} | ||
}, | ||
settings.htmlExtensions || [] | ||
].concat(settings.htmlExtensions || []) | ||
) | ||
var data = {} | ||
var context = { | ||
lineEndingIfNeeded: lineEndingIfNeeded, | ||
options: settings, | ||
encode: encode, | ||
raw: raw, | ||
tag: tag, | ||
buffer: buffer, | ||
resume: resume, | ||
setData: setData, | ||
getData: getData | ||
} | ||
var lineEndingStyle = settings.defaultLineEnding | ||
@@ -174,4 +188,9 @@ var media | ||
result = head.concat(body, events.slice(start, length)) | ||
index = -1 | ||
if (handlers.enter.null) { | ||
handlers.enter.null.call(context) | ||
} | ||
while (++index < length) { | ||
@@ -182,14 +201,3 @@ handler = handlers[result[index][0]] | ||
handler[result[index][1].type].call( | ||
{ | ||
sliceSerialize: result[index][2].sliceSerialize, | ||
lineEndingIfNeeded: lineEndingIfNeeded, | ||
options: settings, | ||
encode: encode, | ||
raw: raw, | ||
tag: tag, | ||
buffer: buffer, | ||
resume: resume, | ||
setData: setData, | ||
getData: getData | ||
}, | ||
assign({sliceSerialize: result[index][2].sliceSerialize}, context), | ||
result[index][1] | ||
@@ -200,2 +208,6 @@ ) | ||
if (handlers.exit.null) { | ||
handlers.exit.null.call(context) | ||
} | ||
return buffers[0].join('') | ||
@@ -752,28 +764,1 @@ } | ||
} | ||
function configure(handlers, extensions) { | ||
var length = extensions.length | ||
var index = -1 | ||
while (++index < length) { | ||
extension(handlers, extensions[index]) | ||
} | ||
return handlers | ||
} | ||
function extension(handlers, extension) { | ||
var hook | ||
var left | ||
var right | ||
var type | ||
for (hook in extension) { | ||
left = own.call(handlers, hook) ? handlers[hook] : (handlers[hook] = {}) | ||
right = extension[hook] | ||
for (type in right) { | ||
left[type] = right[type] | ||
} | ||
} | ||
} |
module.exports = createParser | ||
var own = require('./constant/has-own-property') | ||
var initializeContent = require('./initialize/content') | ||
@@ -11,2 +10,3 @@ var initializeDocument = require('./initialize/document') | ||
var createTokenizer = require('./util/create-tokenizer') | ||
var combineExtensions = require('./util/combine-extensions') | ||
@@ -19,3 +19,5 @@ function createParser(options) { | ||
defined: [], | ||
constructs: configure([constructs].concat(settings.extensions || [])), | ||
constructs: combineExtensions( | ||
[constructs].concat(settings.extensions || []) | ||
), | ||
content: create(initializeContent), | ||
@@ -37,37 +39,1 @@ document: create(initializeDocument), | ||
} | ||
function configure(extensions) { | ||
var all = {} | ||
var length = extensions.length | ||
var index = -1 | ||
while (++index < length) { | ||
extension(all, extensions[index]) | ||
} | ||
return all | ||
} | ||
function extension(all, extension) { | ||
var hook | ||
var left | ||
var right | ||
var code | ||
var constructs | ||
for (hook in extension) { | ||
left = own.call(all, hook) ? all[hook] : (all[hook] = {}) | ||
right = extension[hook] | ||
for (code in right) { | ||
// Note: we prefer the extension over existing constructs. | ||
// There’s no other precedence. | ||
constructs = [].concat( | ||
right[code], | ||
own.call(left, code) ? left[code] : [] | ||
) | ||
left[code] = constructs.length === 1 ? constructs[0] : constructs | ||
} | ||
} | ||
} |
@@ -40,2 +40,3 @@ exports.tokenize = tokenizeDefinition | ||
function tokenizeDefinition(effects, ok, nok) { | ||
var self = this | ||
var atEnd = effects.attempt(createSpaceTokenizer(types.whitespace), after) | ||
@@ -59,5 +60,18 @@ var destinationAfter = effects.attempt(title, atEnd, atEnd) | ||
effects.enter(types.definitionLabelString) | ||
return atBreak | ||
return atStart | ||
} | ||
function atStart(code) { | ||
/* istanbul ignore next - the footnote plugin turns of definitions when they | ||
* start with a caret. */ | ||
if ( | ||
'_hiddenFootnoteSupport' in self.parser.constructs && | ||
code === codes.caret | ||
) { | ||
return nok(code) | ||
} | ||
return atBreak(code) | ||
} | ||
function atBreak(code) { | ||
@@ -64,0 +78,0 @@ if ( |
@@ -470,5 +470,18 @@ exports.tokenize = tokenizeLabelEnd | ||
effects.enter(types.chunkString).contentType = constants.contentTypeString | ||
return referenceData | ||
return atStart | ||
} | ||
function atStart(code) { | ||
/* istanbul ignore next - the footnote plugin turns of refereences when they | ||
* start with a caret. */ | ||
if ( | ||
'_hiddenFootnoteSupport' in self.parser.constructs && | ||
code === codes.caret | ||
) { | ||
return nok(code) | ||
} | ||
return referenceData(code) | ||
} | ||
function referenceData(code) { | ||
@@ -475,0 +488,0 @@ var token |
@@ -8,2 +8,4 @@ exports.tokenize = tokenizelabelImage | ||
function tokenizelabelImage(effects, ok, nok) { | ||
var self = this | ||
return start | ||
@@ -30,3 +32,3 @@ | ||
effects.exit(types.labelImage) | ||
return ok | ||
return after | ||
} | ||
@@ -36,2 +38,15 @@ | ||
} | ||
function after(code) { | ||
/* istanbul ignore next - the footnote plugin turns of images when they | ||
* start with a caret. */ | ||
if ( | ||
'_hiddenFootnoteSupport' in self.parser.constructs && | ||
code === codes.caret | ||
) { | ||
return nok(code) | ||
} | ||
return ok(code) | ||
} | ||
} |
@@ -8,2 +8,4 @@ exports.tokenize = tokenizelabelLink | ||
function tokenizelabelLink(effects, ok, nok) { | ||
var self = this | ||
return start | ||
@@ -22,4 +24,17 @@ | ||
effects.exit(types.labelLink) | ||
return ok | ||
return after | ||
} | ||
function after(code) { | ||
/* istanbul ignore next - the footnote plugin turns of links when they start | ||
* with a caret. */ | ||
if ( | ||
'_hiddenFootnoteSupport' in self.parser.constructs && | ||
code === codes.caret | ||
) { | ||
return nok(code) | ||
} | ||
return ok(code) | ||
} | ||
} |
{ | ||
"name": "micromark", | ||
"version": "2.6.1", | ||
"version": "2.7.0", | ||
"description": "small commonmark compliant markdown parser with positional info and concrete tokens", | ||
@@ -5,0 +5,0 @@ "license": "MIT", |
@@ -88,3 +88,3 @@ <h1 align="center"> | ||
Or: | ||
Or (streaming interface): | ||
@@ -98,3 +98,26 @@ ```js | ||
Or use [**remark**][remark], which will soon include micromark, has ASTs, and is | ||
Or (extensions, in this case [`micromark-extension-gfm`][gfm]): | ||
```js | ||
var micromark = require('micromark') | ||
var gfmSyntax = require('micromark-extension-gfm') | ||
var gfmHtml = require('micromark-extension-gfm/html') | ||
var doc = '* [x] contact@example.com ~~strikethrough~~' | ||
var result = micromark(doc, { | ||
extensions: [gfmSyntax()], | ||
htmlExtensions: [gfmHtml] | ||
}) | ||
console.log(result) | ||
``` | ||
```html | ||
<ul> | ||
<li><input checked="" disabled="" type="checkbox"> <a href="mailto:contact@example.com">contact@example.com</a> <del>strikethrough</del></li> | ||
</ul> | ||
``` | ||
Or use [**remark**][remark], which will soon include micromark and is pretty | ||
stable. | ||
@@ -197,2 +220,4 @@ | ||
* [`micromark/micromark-extension-footnote`](https://github.com/micromark/micromark-extension-footnote) | ||
— support footnotes | ||
* [`micromark/micromark-extension-frontmatter`](https://github.com/micromark/micromark-extension-frontmatter) | ||
@@ -218,3 +243,3 @@ — support frontmatter (YAML, TOML, etc) | ||
micromark will adhere to semver at `3.0.0`. | ||
Use tilde ranges for now: `"micromark": "~2.0.0"`. | ||
Use tilde ranges for now: `"micromark": "~2.7.0"`. | ||
@@ -221,0 +246,0 @@ ## Security |
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
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
373232
154
12020
413