blob: 6eb862d1901f85b5514119f0d0795cab66219f7f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
'use strict';
var parseAttr = require('md-attr-parser');
module.exports = linkAttr;
function linkAttr() {
var parser = this.Parser;
var tokenizers;
if (!isRemarkParser(parser)) {
throw new Error('Missing parser to attach `remark-attr` [link] (to)');
}
tokenizers = parser.prototype.inlineTokenizers;
linkTokenize.locator = tokenizers.link.locator;
let oldLink = tokenizers.link;
function linkTokenize(eat, value, silent) {
let linkEaten = oldLink.bind(this)(eat,value,silent);
var self = this;
var index = 0;
var pedantic = self.options.pedantic;
var commonmark = self.options.commonmark;
var gfm = self.options.gfm;
var parsedAttr;
const length = value.length;
if( !linkEaten || !linkEaten.position ) {
return undefined;
}
index = linkEaten.position.end.offset - linkEaten.position.start.offset;
if (index < length && value.charAt(index) === '{' ) {
parsedAttr = parseAttr(value, index);
}
if (parsedAttr) {
linkEaten.data = {hProperties: parsedAttr.prop};
linkEaten = eat(parsedAttr.eaten)(linkEaten);
}
return linkEaten;
}
tokenizers.link = linkTokenize;
}
function isRemarkParser(parser) {
return Boolean(
parser &&
parser.prototype &&
parser.prototype.inlineTokenizers &&
parser.prototype.inlineTokenizers.link &&
parser.prototype.inlineTokenizers.link.locator
);
}
|