Skip to content

Commit a6f7609

Browse files
committed
add pr
1 parent a00ae47 commit a6f7609

File tree

2 files changed

+85
-33
lines changed

2 files changed

+85
-33
lines changed

docs/demo/demo.js

Lines changed: 84 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ onunhandledrejection = function (e) {
1414
var $markdownElem = document.querySelector('#markdown');
1515
var $markedVerElem = document.querySelector('#markedVersion');
1616
var $commitVerElem = document.querySelector('#commitVersion');
17-
$commitVerElem.style.display = 'none';
1817
var $markedVer = document.querySelector('#markedCdn');
1918
var $optionsElem = document.querySelector('#options');
2019
var $outputTypeElem = document.querySelector('#outputType');
@@ -34,11 +33,11 @@ var $activeOutputElem = null;
3433
var search = searchToObject();
3534

3635
var markedVersions = {
37-
commit: 'commit',
3836
master: 'https://cdn.jsdelivr.net/gh/markedjs/marked/lib/marked.js'
3937
};
4038
var markedVersionCache = {};
4139

40+
$commitVerElem.style.display = 'none';
4241
$previewIframe.addEventListener('load', function () {
4342
lastInput = '';
4443
inputDirty = true;
@@ -75,20 +74,42 @@ fetch('https://data.jsdelivr.com/v1/package/npm/marked')
7574
.then(function () {
7675
if ('version' in search && search.version) {
7776
if (!(search.version in markedVersions)) {
78-
addCommitVersion(search.version);
77+
var match = search.version.match(/^(\w+):(.+)$/);
78+
if (match) {
79+
switch (match[1]) {
80+
case 'commit':
81+
addCommitVersion(search.version, match[2].substring(0, 7), match[2]);
82+
return search.version;
83+
case 'pr':
84+
return getPrCommit(match[2])
85+
.then(function (commit) {
86+
if (!commit) {
87+
return 'master';
88+
}
89+
addCommitVersion(search.version, 'PR #' + match[2], commit);
90+
return search.version;
91+
});
92+
}
93+
}
7994
}
80-
$markedVerElem.value = search.version;
81-
} else {
82-
$markedVerElem.value = 'master';
8395
}
8496

85-
updateVersion().then(function () {
86-
if ('options' in search && search.options) {
87-
$optionsElem.value = search.options;
88-
} else {
89-
setDefaultOptions();
90-
}
91-
});
97+
return 'master';
98+
})
99+
.then(function (version) {
100+
$markedVerElem.value = version;
101+
})
102+
.then(updateVersion)
103+
.then(function () {
104+
if ('options' in search && search.options) {
105+
$optionsElem.value = search.options;
106+
} else {
107+
setDefaultOptions();
108+
}
109+
})
110+
.then(function () {
111+
checkForChanges();
112+
setScrollPercent(0);
92113
});
93114

94115
if (search.outputType) {
@@ -101,14 +122,14 @@ fetch('./quickref.md')
101122
document.querySelector('#quickref').value = text;
102123
});
103124

104-
function addCommitVersion(version) {
105-
if (version in markedVersions) {
125+
function addCommitVersion(value, text, commit) {
126+
if (value in markedVersions) {
106127
return;
107128
}
108-
markedVersions[version] = 'https://cdn.jsdelivr.net/gh/markedjs/marked@' + version + '/lib/marked.js';
129+
markedVersions[value] = 'https://cdn.jsdelivr.net/gh/markedjs/marked@' + commit + '/lib/marked.js';
109130
var opt = document.createElement('option');
110-
opt.textContent = version.substring(0, 7);
111-
opt.value = version;
131+
opt.textContent = text;
132+
opt.value = value;
112133
$markedVerElem.insertBefore(opt, $markedVerElem.firstChild);
113134
}
114135

@@ -139,7 +160,7 @@ handleOutputChange();
139160
$inputTypeElem.addEventListener('change', handleInputChange, false);
140161
handleInputChange();
141162
$markedVerElem.addEventListener('change', function () {
142-
if ($markedVerElem.value === 'commit') {
163+
if ($markedVerElem.value === 'commit' || $markedVerElem.value === 'pr') {
143164
$commitVerElem.style.display = '';
144165
} else {
145166
$commitVerElem.style.display = 'none';
@@ -163,16 +184,36 @@ $optionsElem.addEventListener('keydown', handleInput, false);
163184

164185
$commitVerElem.addEventListener('keypress', function (e) {
165186
if (e.which === 13) {
166-
var commit = $commitVerElem.value.toLowerCase();
167-
if (!commit.match(/^[0-9a-f]{40}$/)) {
168-
alert('That is not a valid commit');
169-
return;
187+
switch ($markedVerElem.value) {
188+
case 'commit':
189+
var commit = $commitVerElem.value.toLowerCase();
190+
if (!commit.match(/^[0-9a-f]{40}$/)) {
191+
alert('That is not a valid commit');
192+
return;
193+
}
194+
addCommitVersion('commit:' + commit, commit.substring(0, 7), commit);
195+
$markedVerElem.value = 'commit:' + commit;
196+
$commitVerElem.style.display = 'none';
197+
$commitVerElem.value = '';
198+
updateVersion();
199+
break;
200+
case 'pr':
201+
$commitVerElem.disabled = true;
202+
var pr = $commitVerElem.value.replace(/\D/g, '');
203+
getPrCommit(pr)
204+
.then(function (commit) {
205+
$commitVerElem.disabled = false;
206+
if (!commit) {
207+
alert('That is not a valid PR');
208+
return;
209+
}
210+
addCommitVersion('pr:' + pr, 'PR #' + pr, commit);
211+
$markedVerElem.value = 'pr:' + pr;
212+
$commitVerElem.style.display = 'none';
213+
$commitVerElem.value = '';
214+
updateVersion();
215+
});
170216
}
171-
addCommitVersion(commit);
172-
$markedVerElem.value = commit;
173-
$commitVerElem.style.display = 'none';
174-
$commitVerElem.value = '';
175-
updateVersion();
176217
}
177218
}, false);
178219

@@ -183,12 +224,24 @@ $clearElem.addEventListener('click', function () {
183224
updateVersion().then(setDefaultOptions);
184225
}, false);
185226

227+
function getPrCommit(pr) {
228+
return fetch('https://api.github.com/repos/markedjs/marked/pulls/' + pr + '/commits')
229+
.then(function (res) {
230+
return res.json();
231+
})
232+
.then(function (json) {
233+
return json[json.length - 1].sha;
234+
}).catch(function () {
235+
// return undefined
236+
});
237+
}
238+
186239
function setDefaultOptions() {
187240
if (window.Worker) {
188241
messageWorker({
189242
task: 'defaults',
190-
version: markedVersions[$markedVerElem.value]}
191-
);
243+
version: markedVersions[$markedVerElem.value]
244+
});
192245
} else {
193246
var defaults = marked.getDefaults();
194247
setOptions(defaults);
@@ -293,7 +346,7 @@ function updateVersion() {
293346
var delayTime = 1;
294347
var checkChangeTimeout = null;
295348
function checkForChanges() {
296-
if (inputDirty && $markedVerElem.value !== 'commit' && (typeof marked !== 'undefined' || window.Worker)) {
349+
if (inputDirty && $markedVerElem.value !== 'commit' && $markedVerElem.value !== 'pr' && (typeof marked !== 'undefined' || window.Worker)) {
297350
inputDirty = false;
298351

299352
updateLink();
@@ -435,5 +488,3 @@ function workerTimeout(seconds) {
435488
workerTimeout(seconds);
436489
}, 1000);
437490
}
438-
checkForChanges();
439-
setScrollPercent(0);

docs/demo/index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ <h1>Marked Demo</h1>
2525
<a id="permalink">Permalink</a> ·
2626
<span>Version: </span>
2727
<select id="markedVersion">
28+
<option value="pr">Add PR:</option>
2829
<option value="commit">Add Commit:</option>
2930
<option value="master" selected>master</option>
3031
</select>

0 commit comments

Comments
 (0)