Thanks a lot @jgm.
Here is what i’ve done by monkey-patching markdown-it’s rule for image. Not proper plugin yet but working very well for me.
var markdownit = window.markdownit()
var defaultRender = markdownit.renderer.rules.image
markdownit.renderer.rules.image = function(tokens, idx, options, env, self) {
var vimeoRE = /^https?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/;
var audioRE = /^.*\.(ogg|mp3)$/gi
var videoRE = /^.*\.(mp4|webm)$/gi
var token = tokens[idx]
var aIndex = token.attrIndex('src');
console.log('aindex of idx' + idx)
console.log(aIndex)
var matches_audio = audioRE.exec(token.attrs[aIndex][1])
var matches_video = videoRE.exec(token.attrs[aIndex][1])
console.log(token.attrs[aIndex][1])
if (vimeoRE.test(token.attrs[aIndex][1])) {
var id = token.attrs[aIndex][1].match(vimeoRE)[2];
return '<div class="embed-responsive embed-responsive-16by9">\n' +
' <iframe class="embed-responsive-item" src="//player.vimeo.com/video/' + id + '"></iframe>\n' +
'</div>\n';
} else if (matches_audio !== null) {
console.log('matches audio')
return ['<p><audio width="320" controls class="audioplayer"',
'<source type="audio/' + matches_audio[1] + '" src=' + matches_audio[0] + '></source>',
'</audio></p>'
].join('\n')
} else if (matches_video !== null) {
console.log('matches video')
return ['<p><video width="320" height="240" class="audioplayer" controls>',
'<source type="video/' + matches_video[1] + '" src=' + matches_video[0] + '></source>',
'</video></p>'
].join('\n')
}else {
console.log('matches img')
return defaultRender(tokens, idx, options, env, self);
}
}
Yes that is very resonable. This will make markdown a lot richer.