Skip to content

Commit d056eda

Browse files
committed
feat(slideshare): added slideshare embedding functionality
fixes #93
1 parent 45b2208 commit d056eda

9 files changed

Lines changed: 246 additions & 23 deletions

File tree

.eslintrc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
"INSTAGRAM": true,
6262
"OPENGRAPH": true,
6363
"ejs": true,
64-
"GITHUB":true
64+
"GITHUB":true,
65+
"SLIDESHARE":true
6566
}
6667
}

build.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"FLICKR" : "true",
3535
"BASICIMAGE" : "true",
3636
"INSTAGRAM" : "true",
37+
"SLIDESHARE" : "true",
3738

3839
"OPENGRAPH" : "true",
3940
"GITHUB" : "true"

demo/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
88
<link href="http://vjs.zencdn.net/5.0.0/video-js.css" rel="stylesheet">
99
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/styles/github.min.css"/>
10-
<link rel="stylesheet" href="../dist/embed.min.css"/>
10+
<link rel="stylesheet" href="../src/embed.css"/>
1111
<style>
1212
body {
1313
width: 50%;
@@ -56,14 +56,14 @@ <h1>Loading embed.js in a block</h1>
5656
Cur rumor nocere?Emeritis adelphis satis perderes domina est.Gloss cadunt in bi-color brema!
5757
@(IIT Roorkee) Bi-color habitio virtualiter imitaris amicitia est.Teres tatas ducunt ad racana.Genetrixs
5858
prarere in
59-
rugensis civitas! :) Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut numquam asperiores nobis repellat modi iusto, possimus excepturi atque, quae doloribus nihil corrupti minima quasi, sed? Vero labore cumque laudantium quisquam! https://www.instagram.com/p/_JHaOcjJ7h/?taken-by=9gag Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique blanditiis architecto tempore minima vero adipisci reiciendis ratione numquam quas perferendis maxime iste, commodi cumque quis praesentium quasi, a neque temporibus? https://www.instagram.com/p/-mIWFsIVV-/?taken-by=natgeo Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto quis vitae cupiditate quam accusamus facere maxime ab distinctio tempore, voluptates itaque culpa amet placeat alias provident corporis, blanditiis explicabo perspiciatis. https://www.flickr.com/photos/43301211@N03/23331635460/in/explore-2015-12-09/
59+
rugensis civitas! :) Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut numquam asperiores nobis repellat modi iusto, possimus excepturi atque, quae doloribus nihil corrupti minima quasi, sed? Vero labore cumque laudantium quisquam! https://www.instagram.com/p/_JHaOcjJ7h/?taken-by=9gag Lorem ipsum dolor sit amet, consectetur adipisicing elit. Similique blanditiis architecto tempore minima vero adipisci reiciendis ratione numquam quas perferendis maxime iste, commodi cumque quis praesentium quasi, a neque temporibus? https://www.instagram.com/p/-mIWFsIVV-/?taken-by=natgeo Lorem ipsum dolor sit amet, consectetur adipisicing elit. Architecto quis vitae cupiditate quam accusamus facere maxime ab distinctio tempore, voluptates itaque culpa amet placeat alias provident corporis, blanditiis explicabo perspiciatis. https://www.flickr.com/photos/43301211@N03/23331635460/in/explore-2015-12-09/ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laborum quasi sit et nam magni ab asperiores tempore, http://www.slideshare.net/haraldf/business-quotes-for-2011 impedit, tempora officiis rerum modi labore vitae explicabo eos aperiam sequi facilis neque.
6060
</div>
6161
</div>
6262
<script src="https://cdnjs.cloudflare.com/ajax/libs/marked/0.3.5/marked.min.js"></script>
6363
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/highlight.min.js"></script>
6464
<script src="//platform.twitter.com/widgets.js"></script>
6565
<script src="http://vjs.zencdn.net/5.0.0/video.js"></script>
66-
<script src="../dist/embed.min.js"></script>
66+
<script src="../src/embed.js"></script>
6767
<script>
6868
ejs.setOptions({
6969
// element: document.getElementById('block'),

dist/embed.min.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
"mocha": "^2.3.4",
6767
"promise": "^7.1.1",
6868
"rollup": "^0.24.0",
69-
"rollup-plugin-babel": "^2.3.5",
69+
"rollup-plugin-babel": "^2.3.6",
7070
"rollup-plugin-commonjs": "^2.1.0",
7171
"rollup-plugin-npm": "^1.2.0",
7272
"rollup-plugin-replace": "^1.1.0"

src/embed.js

Lines changed: 177 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/embed.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/js/embed.es6

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import BasicAudio from './modules/audio/basic.es6'
3434
import Flickr from './modules/image/flickr.es6'
3535
import Instagram from './modules/image/instagram.es6'
3636
import Basic from './modules/image/basic.es6'
37+
import SlideShare from './modules/image/slideshare.es6'
3738

3839
import OpenGraph from './modules/openGraph.es6'
3940
import Github from './modules/github.es6'
@@ -263,6 +264,9 @@ import helper from './modules/helper.es6'
263264
if (INSTAGRAM && utils.ifEmbed(options, 'instagram')) {
264265
[output, embeds] = new Instagram(input, output, options, embeds).process()
265266
}
267+
if (SLIDESHARE && utils.ifEmbed(options, 'slideshare')) {
268+
[output, embeds] = await new SlideShare(input, output, options, embeds).process()
269+
}
266270
if (BASICIMAGE && options.imageEmbed) {
267271
[output, embeds] = new Basic(input, output, options, embeds).process()
268272
}
@@ -412,7 +416,8 @@ import helper from './modules/helper.es6'
412416
},
413417
openGraph(){
414418
}, Github(){
415-
}
419+
},
420+
slideShare(){}
416421
}
417422
};
418423
window.EmbedJS = EmbedJS
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import utils from '../utils.es6'
2+
import '../../vendor/fetch.js'
3+
import helper from './../helper.es6'
4+
import fetchJsonp from '../../vendor/fetch_jsonp.js'
5+
6+
export default class SlideShare {
7+
constructor(input, output, options, embeds) {
8+
this.input = input;
9+
this.output = output;
10+
this.options = options;
11+
this.embeds = embeds;
12+
this.regex = /slideshare.net\/[a-zA-Z0-9_-]*\/[a-zA-Z0-9_-]*/gi;
13+
this.service = 'slideshare';
14+
}
15+
16+
static async fetchData(url) {
17+
let api = `http://www.slideshare.net/api/oembed/2?url=${url}&format=jsonp`;
18+
let response = await fetchJsonp(api, {
19+
credentials: 'include'
20+
});
21+
let data = await response.json();
22+
return data.html;
23+
}
24+
25+
template(html) {
26+
return ejs.template.slideShare(html, this.options) || `<div class="ejs-embed ejs-slideshare">${html}</div>`;
27+
}
28+
29+
static async urlToText(_this, match, url) {
30+
let html = await SlideShare.fetchData(url);
31+
return _this.template(html);
32+
}
33+
34+
async process() {
35+
if (!utils.ifInline(this.options, this.service)) {
36+
this.output = await helper.inlineEmbed(this, SlideShare.urlToText);
37+
} else {
38+
let match;
39+
while ((match = utils.matches(this.regex, this.input)) !== null) {
40+
if (this.options.served.indexOf(match[0]) === -1) {
41+
let html = await SlideShare.fetchData(match[0])
42+
let text = this.template(html);
43+
this.embeds.push({
44+
text: text,
45+
index: match.index
46+
})
47+
}
48+
}
49+
}
50+
return [this.output, this.embeds]
51+
}
52+
}

0 commit comments

Comments
 (0)