Skip to content

Commit 8ecf48a

Browse files
committed
Release 1.0.0
1 parent c010aed commit 8ecf48a

File tree

4 files changed

+31
-37
lines changed

4 files changed

+31
-37
lines changed

Changelog.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Next release
1+
## 1.0.0
22

33
- Drop explicit support for Handlebars
44
- Instead support overriding of a built-in render function

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "markdown-it-html5-embed",
3-
"version": "0.5.0",
3+
"version": "1.0.0",
44
"homepage": "https://github.com/cmrd-senya/markdown-it-html5-embed",
55
"authors": [
66
"comrade Senya <[email protected]>",

dist/markdown-it-html5-embed.js

Lines changed: 28 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(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<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2-
/*! markdown-it-html5-embed https://github.com/cmrd-senya/markdown-it-html5-embed @license MIT */
2+
/*! markdown-it-html5-embed https://github.com/cmrd-senya/markdown-it-html5-embed @license MPLv2 */
33
// This is a plugin for markdown-it which adds support for embedding audio/video in the HTML5 way.
44

55
'use strict';
@@ -16,7 +16,7 @@ var Mimoza = require('mimoza');
1616
// you have to provide a translation function via options.translateFn.
1717
//
1818
// The "untitled video" / "untitled audio" messages are only relevant to usage
19-
// inside Handlebars templates, where you can access the title between [] as
19+
// inside alternative render functions, where you can access the title between [] as
2020
// {{title}}, and this text is used if no title is provided.
2121
var messages = {
2222
en: {
@@ -70,7 +70,7 @@ function parseToken(tokens, idx, env) {
7070
}
7171

7272
if (parsed.mediaType !== null) {
73-
// For use as titles in handlebars templates, we store the description
73+
// For use as titles in alternative render functions, we store the description
7474
// in parsed.title. For use as fallback text, we store it in parsed.fallback
7575
// alongside the standard fallback text.
7676
parsed.fallback = translate({
@@ -100,49 +100,39 @@ function isAllowedMimeType(parsed, options) {
100100
(!options.isAllowedMimeType || options.isAllowedMimeType([parsed.mimeType, parsed.mediaType]));
101101
}
102102

103-
function renderMediaEmbed(parsed, options) {
104-
var attributes = options.attributes[parsed.mediaType];
105-
var useHandlebars = false;
106-
107-
if (options.templateName) {
108-
if (typeof HandlebarsTemplates === "undefined") {
109-
console.log("handlebars_assets is not on the assets pipeline; fall back to the usual mode");
110-
} else {
111-
useHandlebars = true;
112-
}
103+
function isAllowedSchema(parsed, options) {
104+
if (!options.isAllowedHttp && parsed.url.match('^http://')) {
105+
return false;
113106
}
107+
return true;
108+
}
114109

115-
if (useHandlebars) {
116-
return HandlebarsTemplates[options.templateName]({
117-
media_type: parsed.mediaType,
118-
attributes: attributes,
119-
mimetype: parsed.mimeType,
120-
source_url: parsed.url,
121-
title: parsed.title,
122-
fallback: parsed.fallback,
123-
needs_cover: parsed.mediaType === "video"
124-
});
125-
} else {
126-
return ['<' + parsed.mediaType + ' ' + attributes + '>',
127-
'<source type="' + parsed.mimeType + '" src="' + parsed.url + '"></source>',
128-
parsed.fallback,
129-
'</' + parsed.mediaType + '>'
130-
].join('\n');
131-
}
110+
function isAllowedToEmbed(parsed, options) {
111+
return isAllowedMimeType(parsed, options) && isAllowedSchema(parsed, options);
112+
}
113+
114+
function renderMediaEmbed(parsed, mediaAttributes) {
115+
var attributes = mediaAttributes[parsed.mediaType];
116+
117+
return ['<' + parsed.mediaType + ' ' + attributes + '>',
118+
'<source type="' + parsed.mimeType + '" src="' + parsed.url + '"></source>',
119+
parsed.fallback,
120+
'</' + parsed.mediaType + '>'
121+
].join('\n');
132122
}
133123

134124
function html5EmbedRenderer(tokens, idx, options, env, renderer, defaultRender) {
135125
var parsed = parseToken(tokens, idx, env);
136126

137-
if (!isAllowedMimeType(parsed, options.html5embed)) {
127+
if (!isAllowedToEmbed(parsed, options.html5embed)) {
138128
return defaultRender(tokens, idx, options, env, renderer);
139129
}
140130

141131
if (parsed.isLink) {
142132
clearTokens(tokens, idx + 1);
143133
}
144134

145-
return renderMediaEmbed(parsed, options.html5embed);
135+
return renderMediaEmbed(parsed, options.html5embed.attributes);
146136
}
147137

148138
function forEachLinkOpen(state, action) {
@@ -241,11 +231,11 @@ module.exports = function html5_embed_plugin(md, options) {
241231
forEachLinkOpen(gstate, function(tokens, idx) {
242232
var parsed = parseToken(tokens, idx, env);
243233

244-
if (!isAllowedMimeType(parsed, options)) {
234+
if (!isAllowedToEmbed(parsed, options)) {
245235
return;
246236
}
247237

248-
result += renderMediaEmbed(parsed, options);
238+
result += renderMediaEmbed(parsed, options.attributes);
249239
});
250240
if (result.length) {
251241
result += "\n";
@@ -291,6 +281,10 @@ module.exports = function html5_embed_plugin(md, options) {
291281
translate = typeof options.translateFn == 'function' ?
292282
options.translateFn.bind(options.messages) :
293283
translate.bind(options.messages);
284+
285+
if (typeof options.renderFn == 'function') {
286+
renderMediaEmbed = options.renderFn;
287+
}
294288
};
295289

296290
},{"mimoza":2}],2:[function(require,module,exports){

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "markdown-it-html5-embed",
3-
"version": "0.5.0",
3+
"version": "1.0.0",
44
"description": "This is a plugin for markdown-it which adds support for embedding audio/video in the HTML5 way, by using <video>/<audio> tags.",
55
"main": "lib/index.js",
66
"scripts": {

0 commit comments

Comments
 (0)