diff --git a/README.md b/README.md
index e115227..316398c 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Olly.js (1.0)
+Olly.js (1.1)
=======
A JavaScript library to convert URLs into embedable HTML.
@@ -10,11 +10,11 @@ Example
Usage
-----
-Instal with bower or download dist/olly.js
+Install with bower or download dist/olly.js
bower install Olly.js
-After being included with a `
-->
+
Images (.jpg, .png, .bmp, .gif)
Original String
diff --git a/src/domains.js b/src/domains.js
index aa3080a..ae6f69a 100644
--- a/src/domains.js
+++ b/src/domains.js
@@ -175,7 +175,7 @@
};
},
-
+
// Twitch Structure
twitch: function (URL) {
return {
@@ -192,7 +192,19 @@
embedID: URL.pathchunks[0]
}
};
+ },
+
+ // Khan Academy Video Structure
+ khanacademy: function (URL) {
+ var structure = {
+ template: 'khanacademy',
+ data: {
+ embedURL: 'https://www.khanacademy.org/embed_video?v=' + URL.query.v
+ }
+ };
+ return structure;
}
+
};
}(typeof module !== 'undefined' && module.exports? module.exports : window.olly));
diff --git a/src/olly.js b/src/olly.js
index a546071..464b6fc 100644
--- a/src/olly.js
+++ b/src/olly.js
@@ -19,13 +19,13 @@
}
};
- self.embed = function (URLString, element, services) {
- var URL;
+ self.embed = function (URLString, elementOrReturn, services) {
+ var URL, renderResults;
URL = this.parseURL(URLString);
- this.render(element, URL, services);
+ renderResults = this.render(elementOrReturn, URL, services);
- return true;
+ return (typeof renderResults === "boolean") ? true : renderResults;
};
self.richify = function (blob, parentElement, services) {
diff --git a/src/parser.js b/src/parser.js
index 81d6927..2d9f3b4 100644
--- a/src/parser.js
+++ b/src/parser.js
@@ -1,7 +1,7 @@
/*global window,module,olly,document */
(function (olly) {
"use strict";
-
+
//Inspired from https://gist.github.com/jlong/2428561
olly.parseURL = function (URLString) {
var document = typeof module !== 'undefined'? module.document : window.document;
diff --git a/src/render.js b/src/render.js
index 96db878..d899c00 100644
--- a/src/render.js
+++ b/src/render.js
@@ -3,34 +3,58 @@
"use strict";
olly.render = function (element, URL, services) {
- var src, definition, domainName, extensionName, field, templateObj, scriptIndex;
+ var src, definition, domainName, extensionName, field, templateObj, scriptIndex, shouldRender;
domainName = this.findDomain(URL);
extensionName = this.findExtension(URL);
+ shouldRender = (typeof element === "boolean") ? false : true;
if ((!domainName && !extensionName) || (services || {})[domainName] == olly.TEXT) {
return "";
}
+ if(!shouldRender) {
+ element = shouldRender;
+ var returnMarkdown = {
+ scripts: new Array(),
+ markdown: ""
+ };
+ }
+
definition = (this.domains[domainName] || this.extensions[extensionName])(URL);
templateObj = this.templates[definition.template || domainName || extensionName];
if (templateObj && templateObj.scripts) {
for (scriptIndex = 0; scriptIndex < templateObj.scripts.length; scriptIndex += 1) {
- src = templateObj.scripts[scriptIndex];
- this.loadScript(element, olly.generate(src, definition.data));
+ if(!shouldRender) {
+ returnMarkdown.scripts.push(olly.generate(src, definition.data));
+ }
+ else {
+ src = templateObj.scripts[scriptIndex];
+ this.loadScript(element, olly.generate(src, definition.data));
+ }
}
}
- if (definition.templatePromise) {
- definition.templatePromise.then(function (templateObj) {
+ if(shouldRender) {
+ if (definition.templatePromise) {
+ definition.templatePromise.then(function (templateObj) {
+ this.display(templateObj, definition.data, element);
+ });
+ } else {
this.display(templateObj, definition.data, element);
- });
+ }
} else {
- this.display(templateObj, definition.data, element);
+ if (definition.templatePromise) {
+ definition.templatePromise.then(function (templateObj) {
+ returnMarkdown.markdown = this.display(templateObj, definition.data, element);
+ });
+ } else {
+ returnMarkdown.markdown = this.display(templateObj, definition.data, element);
+ }
}
-
- return true;
+
+ return (typeof returnMarkdown === "undefined") ? true : returnMarkdown;
};
olly.findDomain = function (URL) {
@@ -74,7 +98,7 @@
return deferred.promise;
};
- olly.loadScript = function (element, src) {
+ olly.loadScript = function (element, src) {console.log("src:", src);
var script;
script = document.createElement('script');
script.type = 'text/javascript';
@@ -86,7 +110,13 @@
if (typeof templateObj === "string") {
templateObj = {markup: templateObj};
}
- element.innerHTML = olly.generate(templateObj.markup, data);
+
+ if(!element) {
+ return olly.generate(templateObj.markup, data);
+ }
+ else {
+ element.innerHTML = olly.generate(templateObj.markup, data);
+ }
};
olly.generate = function (template, data) {
diff --git a/src/templates.js b/src/templates.js
index ceede9b..d3ffce6 100644
--- a/src/templates.js
+++ b/src/templates.js
@@ -29,7 +29,7 @@
twitter_timeline: {
markup: '',
scripts: ['//platform.twitter.com/widgets.js']
- },
+ },
github: {
markup: '
',
@@ -57,6 +57,8 @@
]
},
+ khanacademy: '
',
+
video: {
markup: '
'
},