diff --git a/Changelog.md b/Changelog.md index 66591bc..dfced1b 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,4 +1,4 @@ -## Next release +## 1.0.0 - Drop explicit support for Handlebars - Instead support overriding of a built-in render function diff --git a/bower.json b/bower.json index 20fea07..c8851f5 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "markdown-it-html5-embed", - "version": "0.5.0", + "version": "1.0.0", "homepage": "https://github.com/cmrd-senya/markdown-it-html5-embed", "authors": [ "comrade Senya ", diff --git a/dist/markdown-it-html5-embed.js b/dist/markdown-it-html5-embed.js index e04b2c8..56094bd 100644 --- a/dist/markdown-it-html5-embed.js +++ b/dist/markdown-it-html5-embed.js @@ -1,5 +1,5 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.markdownitHTML5Embed = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o', - '', - parsed.fallback, - '' - ].join('\n'); - } +function isAllowedToEmbed(parsed, options) { + return isAllowedMimeType(parsed, options) && isAllowedSchema(parsed, options); +} + +function renderMediaEmbed(parsed, mediaAttributes) { + var attributes = mediaAttributes[parsed.mediaType]; + + return ['<' + parsed.mediaType + ' ' + attributes + '>', + '', + parsed.fallback, + '' + ].join('\n'); } function html5EmbedRenderer(tokens, idx, options, env, renderer, defaultRender) { var parsed = parseToken(tokens, idx, env); - if (!isAllowedMimeType(parsed, options.html5embed)) { + if (!isAllowedToEmbed(parsed, options.html5embed)) { return defaultRender(tokens, idx, options, env, renderer); } @@ -142,7 +132,7 @@ function html5EmbedRenderer(tokens, idx, options, env, renderer, defaultRender) clearTokens(tokens, idx + 1); } - return renderMediaEmbed(parsed, options.html5embed); + return renderMediaEmbed(parsed, options.html5embed.attributes); } function forEachLinkOpen(state, action) { @@ -241,11 +231,11 @@ module.exports = function html5_embed_plugin(md, options) { forEachLinkOpen(gstate, function(tokens, idx) { var parsed = parseToken(tokens, idx, env); - if (!isAllowedMimeType(parsed, options)) { + if (!isAllowedToEmbed(parsed, options)) { return; } - result += renderMediaEmbed(parsed, options); + result += renderMediaEmbed(parsed, options.attributes); }); if (result.length) { result += "\n"; @@ -291,6 +281,10 @@ module.exports = function html5_embed_plugin(md, options) { translate = typeof options.translateFn == 'function' ? options.translateFn.bind(options.messages) : translate.bind(options.messages); + + if (typeof options.renderFn == 'function') { + renderMediaEmbed = options.renderFn; + } }; },{"mimoza":2}],2:[function(require,module,exports){ diff --git a/package.json b/package.json index b75f369..83e34a0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "markdown-it-html5-embed", - "version": "0.5.0", + "version": "1.0.0", "description": "This is a plugin for markdown-it which adds support for embedding audio/video in the HTML5 way, by using